Hamming Code DCN

Ram Pothuraju
This program is for implementing Hamming Code. 


#include<stdio.h>
#include<conio.h>
#include<math.h>

int d[11],s[11],r[11],c[11];
int p1,p2,p4,p8;
int n,i,j,ctr;
void Sender();
void Receiver();
void ham(int []);
void main()
{

            int ch;
            clrscr();
            printf("\n\n1. SENDER");
            printf("\n2.RECEIVER");
            printf("\n3. END");
            while(1)
            {
                        printf("\n\nEnter your choice : ");
                        scanf("%d",&ch);
                        switch(ch)
                        {
                                    case 1:
                                    Sender();
                                    break;

                                    case 2:
                                    Receiver();
                                    break;

                                    case 3:
                                    exit();
                        }
            }
            getch();
}


void ham(int d[])
{
            ctr=0;
            for(i=0;i<11;i++)
            {
                        if(i==0 || i==2 || i==4 || i==6 || i==8 || i==10)
                        {
                                    if(d[i]==1)
                                                ctr++;
                        }
            }
            if(ctr%2==0)
                        p1=0;
            else
                        p1=1;
            ctr=0;

            for(i=0;i<11;i++)
            {
                        if(i==1 || i==2 || i==5 || i==6 || i==9 || i==10)
                        {
                                    if(d[i]==1)
                                                ctr++;
                        }
            }
            if(ctr%2==0)
                        p2=0;
            else
                        p2=1;
            ctr=0;

            for(i=0;i<11;i++)
            {
                        if(i==3 || i==4 || i==5 || i==6)
                        {
                                    if(d[i]==1)
                                                ctr++;
                        }
            }
            if(ctr%2==0)
                        p4=0;
            else
                        p4=1;
            ctr=0;

            for(i=0;i<11;i++)
            {
                        if(i==7 || i==8 || i==9 || i==10)
                        {
                                    if(d[i]==1)
                                                ctr++;
                        }
            }
            if(ctr%2==0)
                        p8=0;
            else
                        p8=1;
            ctr=0;

            d[0]=p1;
            d[1]=p2;
            d[3]=p4;
            d[7]=p8;
            for(i=0;i<11;i++)
                        s[i]=d[i];

}


void Sender()
{
            printf("\n\nEnter Binary data of 7 bits : ");
            for(i=0;i<11;i++)
            {
                        if(i==0 || i==1 || i==3 || i==7)
                        {}
                        else
                                    scanf("%d",&s[i]);
            }
            printf("\n\nData : ");
            for(i=0;i<11;i++)
                        printf("%d",s[i]);

            ham(s);
            printf("\n\nHamming Data : ");
            for(i=0;i<11;i++)
                        printf("%d",s[i]);

}

void Receiver()
{
            int e;
            printf("\n\nEnter Binary data of 11 bits : ");
            for(i=0;i<11;i++)
                        scanf("%d",&r[i]);
            for(i=0;i<11;i++)
                        c[i]=r[i];

            printf("\n\nData : ");
            for(i=0;i<11;i++)
                        printf("%d",r[i]);

            ham(r);
            if(p1==0 && p2==0 && p4==0 && p8==0)
                        printf("\n\nThe Received Data is Right.");
            else
            {
                        e=0;
                        if(p1==1)
                                    e=e+pow(2,0);
                        if(p2==1)
                                    e=e+pow(2,1);
                        if(p4==1)
                                    e=e+pow(2,2);
                        if(p8==1)
                                    e=e+pow(2,3);
                        printf("\n\nThe Received Data has Some ERROR.");
                        printf("\n\nThe ERROR is at position : %d",e);
                        if(c[e-1]==1)
                                    c[e-1]=0;
                        else
                                    c[e-1]=1;

                   printf("\nThe Corrected Data : ");
            for(i=0;i<11;i++)
                        printf("%d",c[i]);
            }
}




Post a Comment

0Comments

Post a Comment (0)