Вы находитесь на странице: 1из 6

import java.io.

*;
import java.lang.Math;
class hc4
{
public static void f(String s,int k,int w,int c[])
{
if(s.equalsIgnoreCase("even"))
{
if(k%2==0)
c[w]=0;
else
c[w]=1;
}
else
{
if(k%2==0)
c[w]=1;
else
c[w]=0;
}
}
public static void fun(int e[],int v,int u,String s,int k,int d[])
{
if(s.equalsIgnoreCase("even"))
{
if((k%2)==d[v])
{e[u]=0;}
else
e[u]=v;
}
else
{
if((k%2)!=d[v])
{e[u]=0;}
else
e[u]=v;
}
System.out.println("e["+u+"]="+e[u]);
}
public static int pow(int c[],int p)
{
int k=0;
for(int j=3;j<=p;j+=2)
if(c[j]==1)
k++;
System.out.println("k0="+k);
return k;
}
public static int powe(int c[],int p)
{
int k=0;
for(int j=3;j<=p;j+=4)
{
if(c[j]==1)k++;
if((j+3)<=p)
if(c[j+3]==1)k++;
}
System.out.println("k1="+k);
return k;
}

public static int power(int c[],int p)


{
int k=0;
for(int j=4;j<=p;j+=8)
{
for(int t=0;t<4;t++)
{
if(((j+t)!=4)&&((j+t)<=p))
if(c[j+t]==1)
k++;
}
}
System.out.println("k2="+k);
return k;
}
public static int powers(int c[],int p)
{
int k=0;
for(int j=8;j<=p;j+=16)
{
for(int t=0;t<8;t++)
{
if(((j+t)!=8)&&((j+t)<=p))
if(c[j+t]==1)
k++;
}
}
System.out.println("k3="+k);
return k;
}
public static int po(int c[],int p)
{
int k=0;
for(int j=17;j<=p;j++)
if(c[j]==1)
k++;
System.out.println("k4="+k);
return k;
}
public static void main(String args[])throws Exception
{
DataInputStream in=new DataInputStream(System.in);
int k=0,p,f=1000,l,i,x,t;
System.out.println("Enter length:");
l=Integer.parseInt(in.readLine());
int a[]=new int[l+1];
System.out.println("Enter parity");
String s=in.readLine();
System.out.println("Enter String:");
for(i=1;i<=l;i++)
a[i]=Integer.parseInt(in.readLine());
int r=0;
while((l+r+1)>Math.pow(2,r))
r++;

System.out.println("r="+r);
int c[]=new int[l+r+1];
p=l+r;

c[1]=c[2]=f;
i=3;x=1;t=2;
while(i<=p)
{
if(i==Math.pow(2,t))
{
c[i]=f;
t++;
}
else
{
c[i]=a[x];
x++;
}
i++;
}
k=pow(c,p);
f(s,k,1,c);

k=powe(c,p);
f(s,k,2,c);
k=power(c,p);
f(s,k,4,c);
if(p>=8){
k=powers(c,p);
f(s,k,8,c);
}
if(p>=16){
k=po(c,p);
f(s,k,16,c);
}
System.out.println("STRING:");
for(i=1;i<=p;i++)
System.out.print(c[i]);
System.out.println("\nEnter String at reciever end : ");
int d[]=new int[p+1];
d[1]=c[1];
d[2]=c[2];
t=2;
for(i=3;i<=p;i++)
{
if(i==Math.pow(2,t))
{
d[i]=c[i];
t++;
}
else
d[i]=Integer.parseInt(in.readLine());
}
for(i=1;i<=p;i++)
System.out.print(d[i]);
System.out.println("\n");
int e[]=new int[r];
k=pow(d,p);
fun(e,1,0,s,k,d);
k=powe(d,p);
fun(e,2,1,s,k,d);
k=power(d,p);
fun(e,4,2,s,k,d);
if(p>=8){
k=powers(d,p);
fun(e,8,3,s,k,d);
}
if(p>=16){
k=po(d,p);
fun(e,16,4,s,k,d);
}
int add=0;
for(int j=0;j<r;j++)
add=add+e[j];
if(add!=0)
System.out.println("Errored bit is :"+add);
else
System.out.println("There is no error ");
}
}

/*output
C:\cn>java hc4
Enter length:
5
Enter parity
even
Enter String:
1
1
0
1
1
r=4
k0=4
k1=2
k2=2
k3=1
STRING:
001010111
Enter String at reciever en
1
1
1
1
1
001011111
k0=4
e[0]=0
k1=3
e[1]=2
k2=3
e[2]=4
k3=1
e[3]=0
Errored bit is :6

C:\cn>java hc4
Enter length:
20
Enter parity
odd
Enter String:
1
1
1
1
1
0
0
0
0
0
1
1
1
1
1
0
0
0
0
0
r=5
k0=7
k1=6
k2=5
k3=2
k4=4
STRING:
0110111110000011111100000
Enter String at reciever end :
1
1
1
1
1
0
0
0
0
0
1
1
1
1
1
0
0
0
0
0
0110111110000011111100000
k0=7
e[0]=0
k1=6
e[1]=0
k2=5
e[2]=0
k3=2
e[3]=0
k4=4
e[4]=0
There is no error
*/

Вам также может понравиться