Wednesday, September 29, 2010

Hamming Code

#include
#include
#include
void main()
{
char ch;
int rc[7],i,j,tot,ans,a[4],r[3],s[3],b[4],q[3];
clrscr();
printf("\n Enter Datawoed: ");

for(i=3;i>=0;i--)
scanf("%d",&a[i]);

//for r0
tot=a[0]+a[1]+a[2];
if(tot%2==0)
r[0]=0;
else
r[0]=1;

//for r1
tot=a[1]+a[2]+a[3];
if(tot%2==0)
r[1]=0;
else
r[1]=1;

//for r2
tot=a[0]+a[1]+a[3];
if(tot%2==0)
r[2]=0;
else
r[2]=1;


printf("\n Resultant Codeword\n");
for(i=3;i>=0;i--)
printf("\t%d",a[i]);
for(i=2;i>=0;i--)
printf("\t%d",r[i]);

printf("\n Want to change codeword?\n");
scanf("%s",&ch);
if(ch=='y' || ch=='Y')
{
for(i=6;i>=0;i--)
scanf("%d",&rc[i]);

for(i=6,j=3;i>=3,j>=0;i--,j--)
b[j]=rc[i];

for(i=2,j=2;i>=0;i--,j--)
q[j]=rc[i];


//SYNDROME
//for s0
tot=b[0]+b[1]+b[2]+q[0];
if(tot%2==0)
s[0]=0;
else
s[0]=1;

//for s1
tot=b[1]+b[2]+b[3]+q[1];
if(tot%2==0)
s[1]=0;
else
s[1]=1;

//for s2
tot=b[0]+b[1]+b[3]+q[2];
if(tot%2==0)
s[2]=0;
else
s[2]=1;

printf("\n\nS2\tS1\tS0\n");
for(j=2;j>=0;j--)
printf("%d\t",s[j]);

for(j=2,ans=0;j>=0;j--)
ans=ans+pow(2,j)*s[j];
printf("\n Answer=%d",ans);

switch(ans)
{
case 0:
printf("\n No Error");
break;

case 1:
printf("\n There is an error is q0");
if(q[0]==0)
q[0]=1;
else
q[0]=0;
break;

case 2:
printf("\n There is an error is q1");
if(q[1]==0)
q[1]=1;
else
q[1]=0;
break;

case 3:
printf("\n There is an error is b2");
if(b[2]==0)
b[2]=1;
else
b[2]=0;

break;

case 4:
printf("\n There is an error is q2");
if(q[2]==0)
q[2]=1;
else
q[2]=0;

break;

case 5:
printf("\n There is an error is b0");
if(b[0]==0)
b[0]=1;
else
b[0]=0;
break;

case 6:
printf("\n There is an error is b3");
if(b[3]==0)
b[3]=1;
else
b[3]=0;
break;

case 7:
printf("\n There is an error is b1");
if(b[1]==0)
b[1]=1;
else
b[1]=0;
break;
}
printf("\n After Correction\n");
for(i=3;i>=0;i--)
printf("\t%d",b[i]);
for(i=2;i>=0;i--)
printf("\t%d",q[i]);
 }
 getch();

No comments:

Post a Comment