Search This Blog

Sunday 28 February 2016

Hamming code

#include<stdio.h>
int main()
{
int n,i,a[4],b[4],r[7],s[3],j;
printf("Enter datawrd of 4 bits");
for(i=0,j=3;i<4;i++,j--)
{
scanf("%d",&r[i]);
a[j]=r[i];
}
r[6]=(a[0]+a[1]+a[2])%2;
r[5]=(a[1]+a[2]+a[3])%2;
r[4]=(a[0]+a[1]+a[3])%2;

printf("\nWhat to be send is ->");
for(i=0;i<7;i++)
{
printf("%d",r[i]);
}

printf("\nEnter 7 bit which received\n");
for(i=3;i>=0;i--)
{
scanf("%d",&b[i]);
}
for(i=4;i<7;i++)
{
scanf("%d",&b[i]);
}

s[2]=(b[1]+b[3]+b[0]+b[4])%2;
s[1]=(b[1]+b[3]+b[2]+b[5])%2;
s[0]=(b[0]+b[2]+b[1]+b[6])%2;
n=s[2]+s[1]+s[0];
if(n==0)
{
printf("\n No error ! codeword is: ");
for(i=0;i<4;i++)
{
printf("%d",r[i]);
}
}
else if(n==1)
{
printf("\nError is at redundant bit");
if(s[0]==1)
{
printf("\nError is at bit b[6]");
s[0]=!s[0];
printf("%d",s[0]);
}
else if(s[1]==1)
{
printf("\nError is at bit b[5]");
s[1]=!s[1];
}
else
{
printf("\nError is at bit b[4]");
s[2]=!s[2];
}
printf("\n The data word is :");
for(i=0;i<4;i++)
{
printf("%d",b[i]);
}
}
else if(n==2)
{
if(s[0]==1 && s[1]==1)
{
printf("\nError is at bit b[1]");
b[2]=!b[2];
}
else if(s[1]==1 && s[2]==1)
{
printf("\nError is at bit b[0]");
b[3]=!b[3];
}
else
{
printf("\nError is at bit b[3]");
b[0]=!b[0];
}
printf("\n The data word is:");
for(i=0;i<4;i++)
{
printf("%d",r[i]);
}
}
else if(n==3)
{
b[1]=!b[1];
printf("\nError is at bit b[2]");
printf("\nThe data word is:");

for(i=0;i<4;i++)
{
printf("%d",r[i]);
}
}
return 0;
}


Enter dataword :
0 0 0 0

enter received bit
1 0 0 0 0 0 0

error in b[0]

No comments:

Post a Comment