Computer Network: Hamming Code Program in C programming

Posted on:
tags: , ,

Hamming Code Program 

(1 bit error correction)

Lab Exams are coming and this program is very vital for CSE Students. This program can run on any Linux distribution OS. so, if you want to run it on turbo C then give header file <conio.h> and getch(); at end (before } ). And also write clrscr(); to clear the screen(remove system("clear");)
lets start...


#include<stdio.h>
#include<math.h>
int main()
{
     int a[20],b[20],c[20],d[20],i,k,m,f,n,j,r,p,x,y,z,ch,key,q,v,sum=0;
     system("clear");
     printf("\n ENTER THE LENGTH OF DATA WORD :");
     scanf("%d",&k);
     printf("\n ENTER THE DATA WORD \n");
     for(i=1; i<=k; i++){
           scanf("%d",&a[i]);
     }
     m=1;
     while((k+m+1)>=pow(2,m)){
           m++;
     }
     printf("\n Value of m is : %d",m);
     n=k+m;
     j=1; r=0;
     for(i=1; i<=n; i++){
           p=pow(2,r);
           if(i==p){
                b[i]=0;
                r++;
           }
           else{
                b[i]=a[j];
                j++;
           }
     }
     printf("\n INTERMEDIATE CODE WORD IS \n");
     for(i=1; i<=n; i++)
           printf("%d",b[i]);
     p=0;
     for(i=1; i<=m; i++)
     {
           x=pow(2,p); r=1;
           for(j=x; j<=n; j=j+(x*2)){
                for(y=j; y<(j+x); y++){
                     c[r]=b[y];
                     r++;
                }
           }
           z=0;
           for(y=1; y<=(r-1); y++)
           {
                if(c[y]==1) z++;
           }
           if(z%2==0)
                b[x]=0;
           else
                b[x]=1;
           for(y=1; y<=20; y++)
                c[y]=0;
           p++;
     }
     printf("\n\n THE HAMMING CODE IS \n");
     for(i=1; i<=n; i++)
           printf("%d",b[i]);
     while(1){
                printf("\n\n PRESS 1 TO ALTER A BIT 0 to EXIT \n\n");
                scanf("%d",&ch);
                if(ch==1){
                        printf("\n ENTER THE BIT YOU WANT TO CHANGE \n");
                        scanf("%d",&key);
                        for(i=1; i<=n; i++){
                                if(i==key){
                                        if(b[key]==1) b[key]=0;
                                        else b[key]=1;
                                        break;
                                }
                        }
                        printf("\n THE NEW CODE IS \n\n");
                        for(i=1; i<=n; i++)
                                printf("%d",b[i]);
                }
                else
                        break;
        }
     p=0; q=0;
        for(i=1; i<=m; i++)
        {
                x=pow(2,p); r=1;
                for(j=x; j<=n; j=j+(x*2)){
                        for(y=j; y<(j+x); y++){
                                c[r]=b[y];
                                r++;
                        }
                }
                z=0;
                for(y=1; y<=(r-1); y++)
                {
                        if(c[y]==1) z++;
                }
                v=z%2;
           d[q]=v;
           sum=sum+(v*pow(2,q));
           q++;
                for(y=1; y<=20; y++)
                        c[y]=0;
                p++;
        }
     if(sum==0)
           printf("\n\n NO ERROR FOUND....... \n\n");
     else
           printf("\n\n ERROR AT POSITION %d",sum);
     printf("\n");
     return 0;
}



To learn its theory part please visit on the link below:

No comments:

Post a comment

< >