Sie sind auf Seite 1von 9

1] Write a program to implement VRC and LRC.

Code (VRC Program):


#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char *a,*b,*c,*d;
int i,l,c1,c2,c3,e;
clrscr();
top:
printf("\nEnter 1st Dataword: ");
gets(a);
if(strlen(a)!=7)
{
printf("Invalid Data");
goto top;
}
else
{
for(i=0;i<strlen(a);i++)
{
if(a[i]=='1' || a[i]=='0')
continue;
else

{
printf("enter binary digits");
goto top;
}
}
}
top1:
printf("\nEnter 2nd Dataword: ");
gets(b);
if(strlen(b)!=7)
{
printf("Invalid Data");
goto top1;
}
else
{
for(i=0;i<strlen(b);i++)
{
if(b[i]=='1' || b[i]=='0')
continue;
else
{
printf("enter binary digits");
goto top1;
}

}
}
top2:
printf("\n3rd Enter Dataword: ");
gets(c);
if(strlen(c)!=7)
{
printf("Invalid Data");
goto top2;
}
else
{
for(i=0;i<strlen(c);i++)
{
if(c[i]=='1' || c[i]=='0')
continue;
else
{
printf("enter binary digits");
goto top2;
}
}
}
l=strlen(a);
for(i=0;i<l;i++)

{
c1=c2=c3=0;
if(a[i]=='1')
c1++;
if(b[i]=='1')
c2++;
if(c[i]=='1')
c3++;
e=c1+c2+c3;
if(e%2==0)
d[i]='1';
else
d[i]='0';
}
for(i=0;i<l;i++)
{
printf("%c",d[i]);
}
d[i]='\0';
strcat(a,b);
strcat(a,c);
strcat(a,d);
printf("\nLRC: ");
puts(a);
getch();

Code (LRC Program):


#include<conio.h>
#include<stdio.h>
char data[64];
int fram[64],frames;
int msg[8][8],m[8][8]; //maximum 7 frames
int len;
void sender()
{
int length,i,j,k,count,bit,s,p;
clrscr();
frames=0;
printf("\n\n\t\t---------------Sender Side---------------\n\n");
printf("\nEnter the data: ");
scanf("%s",data);
//accept data in character format
len=strlen(data);
//length of character data
for(i=0; i<len; i++)
{
fram[i]=(int)data[i];
fram[i]=fram[i]%48;
}
frames=len/7;

//typecasting to ascii value 48 for 0 & 49 for 1


//to get 0 & 1

//calculation of frames

for(i=0, k=0; i<frames; i++) //converting 1-dimensional to 2-dimensional


{
if(k<len)
{
for(j=0; j<7; j++)
{
msg[i][j]=fram[k];
k++;
}
}
}
for(i=0;i<frames;i++)
// adding parity bit
{
count=0;
for(j=0;j<7;j++)
{
if(msg[i][j]==1)
{
count++;

}
}
if(count%2==0)
msg[i][j]=0;
else
msg[i][j]=1;
}
printf("\n\nCalculation of LRC:\n\n");
for(i=0;i<frames;i++)
{
for(j=0;j<=7;j++)
{
printf("%d ",msg[i][j]);
}
printf("\n\n");
}
printf("\n\n\n Data sent:\t");
for(i=0;i<frames;i++)
{
for(j=0;j<=7;j++)
{
printf("%d",msg[i][j]);
}
printf(" ");
}
}
int receiver()
{
int i,j,k,cnt,f1=0;
printf("\n\n\t\t---------------Receiver Side---------------\n\n");
printf("\n\nEnter Data received : ");
scanf("%s",data);
//accept data in character format
len=strlen(data);
//length of character data
for(i=0; i<len; i++)
{
fram[i]=(int)data[i];
fram[i]=fram[i]%48;
}
frames=len/8;

//typecasting to ascii value 48 for 0 & 49 for 1


//to get 0 & 1

//frames=len/7; in sender

for(i=0, k=0; i<frames; i++) //converting 1-dimensional to 2-dimensional

{
if(k<len)
{
for(j=0; j<8; j++)
{
m[i][j]=fram[k];
k++;
}
}
}
for(i=0;i<frames;i++)
// checking parity bit
{
cnt=0;
for(j=0;j<8;j++)
{
if(m[i][j]==1)
{
cnt++;
}
}
if(cnt%2==0)
{
if(m[i][j]==0)
f1=1;
else
{
f1=0;
printf("\n\nData rejected...(1)!!!");
return(0);
}
}
else
{
if(m[i][j]==1)
f1=1;
else
{
f1=0;
printf("\n\nData rejected...!!!");
return(0);
}
}
}
if(f1==1)
{
printf("\n\nOriginal data : ");

for(i=0;i<frames;i++)
{
for(j=0;j<=6;j++)
{
printf("%d",m[i][j]);
}
printf(" ");
}
}
printf("\n\nData accepted...");
return 0;
}
void main()
{
clrscr();
sender();
receiver();
getch();
}
Output:

Das könnte Ihnen auch gefallen