#include<stdio.h>
#include<stdlib.h>
int input[25],temp[25], n;
struct reg
{
int bit;
}r[3];
void crc();
void checkerr();
void main()
{
int i,x;
for(i=0;i<3;i++)
r[i].bit=0;
printf("enter n\n");
scanf("%d",&n);
printf("enter input\n");
for(i=0;i<n;i++)
scanf("%d",&input[i]);
for(i=n;i<(n+3);i++)
input[i]=0;
printf("at sender\n");
crc();
printf("data transmitted\n");
for(i=n,x=2;i<(n+3),x>=0;i++,x--)
input[i]=r[x].bit;
for(i=0;i<7;i++)
printf("%d", input[i]);
for(i=0;i<3;i++)
r[i].bit=0;
printf("at reciever\n");
printf("enter the data recieved\n");
for(i=0;i<7;i++)
scanf("%d",& input[i]);
for(i=0;i<7;i++)
temp[i]=input[i];
crc();
checkerr();
}
void crc()
{
int i,lmb,j;
for(j=0;j<(n+3);j++)
{
lmb=r[2].bit;
for(i=2;i>0;i--)
r[i].bit=r[i-1].bit;
r[0].bit=input[j];
if(lmb==1)
{
//r[12].bit=r[12].bit^1;
r[1].bit=r[1].bit^1;
r[0].bit=r[0].bit^1;
}
for(i=0;i<3;i++)
printf("%d",r[i].bit);
printf("\n");
}
}
void checkerr()
{
int i,err=0;
for(i=0;i<3;i++)
if(r[i].bit!=0)
{ err=1;
break;
}
if(err==1)
{
printf("error at position %d",i);
}
else
{
printf("no error\n");
}
}