aboutsummaryrefslogtreecommitdiff
path: root/q3/hamming.c
diff options
context:
space:
mode:
Diffstat (limited to 'q3/hamming.c')
-rw-r--r--q3/hamming.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/q3/hamming.c b/q3/hamming.c
new file mode 100644
index 0000000..01d0f0e
--- /dev/null
+++ b/q3/hamming.c
@@ -0,0 +1,56 @@
1#include<stdio.h>
2
3void main() {
4 int data[10];
5 int dataatrec[10],c,c1,c2,c3,i;
6
7 printf("Sender: ");
8 scanf("%d %d %d %d",&data[0] ,&data[1] ,&data[2] ,&data[4]);
9
10 //Calculation of even parity
11 data[6]=data[0]^data[2]^data[4];
12 data[5]=data[0]^data[1]^data[4];
13 data[3]=data[0]^data[1]^data[2];
14
15 printf("Encoded Data: ");
16 for(i=0;i<7;i++)
17 printf("%d",data[i]);
18
19 printf("\nReceiver: ");
20 for(i=0;i<7;i++)
21 scanf("%d",&dataatrec[i]);
22
23 c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];
24 c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];
25 c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];
26 c=c3*4+c2*2+c1 ;
27
28 printf("\nSyndrome bits: %d %d %d", c1, c2, c3);
29
30 if(c==0) {
31 printf("\nNo error while transmission of data\n");
32 }
33 else {
34 printf("\nError Position: %d",c);
35
36 printf("\nData sent: ");
37 for(i=0;i<7;i++)
38 printf("%d",data[i]);
39
40 printf("\nData received: ");
41 for(i=0;i<7;i++)
42 printf("%d",dataatrec[i]);
43
44 printf("\nCorrect message is: ");
45
46 //if errorneous bit is 0 we complement it else vice versa
47 if(dataatrec[7-c]==0)
48 dataatrec[7-c]=1;
49 else
50 dataatrec[7-c]=0;
51
52 for (i=0;i<7;i++) {
53 printf("%d",dataatrec[i]);
54 }
55 }
56}