Programming Language : C
Code:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
struct s
{
int seq_no,frame[10],parity;
}s1[20],tmp[20];
void copy(struct s[]);
void parityCount(struct s[]);
void print(struct s[]);
void error(int *);
void sender(int *,int);
void reciver(struct s[]);
int main()
{
char str[20];
int i,j,as,q,arr[10],a[50],n,k;
printf("\t\t\tShojibul Alam Shojib\n\n");
printf("Enter any string..");
scanf("%s",str);
n=0;
printf("\n\n String in binary..\n\n");
for(j=0;str[j];j++)
{
i=0;
as=toascii(str[j]);
q=as;
while(q!=1)
{
arr[i++]=q%2;
q/=2;
}
arr[i++]=1;
for(k=i-1;k>=0;k--)
a[n++]=arr[k];
}
for(j=0;j<n;j++)
printf("%d",a[j]);
printf("\n");
sender(a,n);
return 0;
}
int len;
void sender(int a[],int i)
{
int j,no=0,k;
len=i/10;
if(i%10==0)
len--;
for(j=0;j<=len;j++)
{
s1[j].seq_no=(j+1);
for(k=0;k<10;k++)
{
if(no!=i)
s1[j].frame[k]=a[no++];
}
}
parityCount(s1);
copy(s1);
printf("\n Sending data..\n\n");
print(s1);
reciver(s1);
}
void copy(struct s temp[]) // After receiving check for correct frame.
{
int j,k;
for(j=0;j<=len;j++)
{
tmp[j].seq_no=(j+1);
for(k=0;k<10;k++)
tmp[j].frame[k]=s1[j].frame[k];
tmp[j].parity=temp[j].parity;
}
}
void parityCount(struct s *s1) // For count the parity bits of frame.
{
int ans=0,j,k;
for(j=0;j<=len;j++)
{
for(k=0;k<10;k++)
ans=ans ^ s1[j].frame[k];
s1[j].parity=ans;
}
}
void print(struct s s1[]) // Printing individual frames.
{
int j,k;
for(j=0;j<=len;j++)
{
printf("\n\t%d \t ",s1[j].seq_no);
for(k=0;k<10;k++)
printf("%d",s1[j].frame[k]);
printf("\t %d ",s1[j].parity);
printf("\n");
}
}
void error(int *a) // To give the error to frame.
{
int j;
for(j=0;j<9;j++)
{
a[j]=a[j+1];
}
}
void reciver(struct s s2[])
{
int k,j,flg=1;
error(&s2[0].frame[0]);
parityCount(&s2[0]);
printf("\n\n");
for(j=0;j<=len;j++)
{
if(s2[j].parity != tmp[j].parity)
{
flg=0;
break;
}
else
flg=1;
}
printf("\n\n");
if(flg==0)
printf("\n Wrong Data Recievd..\n");
else
printf("\n Correct Data Recievd..\n");
printf("\n Recived data..\n\n");
print(s2);
}
Written by 'Shojib'
Code:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
struct s
{
int seq_no,frame[10],parity;
}s1[20],tmp[20];
void copy(struct s[]);
void parityCount(struct s[]);
void print(struct s[]);
void error(int *);
void sender(int *,int);
void reciver(struct s[]);
int main()
{
char str[20];
int i,j,as,q,arr[10],a[50],n,k;
printf("\t\t\tShojibul Alam Shojib\n\n");
printf("Enter any string..");
scanf("%s",str);
n=0;
printf("\n\n String in binary..\n\n");
for(j=0;str[j];j++)
{
i=0;
as=toascii(str[j]);
q=as;
while(q!=1)
{
arr[i++]=q%2;
q/=2;
}
arr[i++]=1;
for(k=i-1;k>=0;k--)
a[n++]=arr[k];
}
for(j=0;j<n;j++)
printf("%d",a[j]);
printf("\n");
sender(a,n);
return 0;
}
int len;
void sender(int a[],int i)
{
int j,no=0,k;
len=i/10;
if(i%10==0)
len--;
for(j=0;j<=len;j++)
{
s1[j].seq_no=(j+1);
for(k=0;k<10;k++)
{
if(no!=i)
s1[j].frame[k]=a[no++];
}
}
parityCount(s1);
copy(s1);
printf("\n Sending data..\n\n");
print(s1);
reciver(s1);
}
void copy(struct s temp[]) // After receiving check for correct frame.
{
int j,k;
for(j=0;j<=len;j++)
{
tmp[j].seq_no=(j+1);
for(k=0;k<10;k++)
tmp[j].frame[k]=s1[j].frame[k];
tmp[j].parity=temp[j].parity;
}
}
void parityCount(struct s *s1) // For count the parity bits of frame.
{
int ans=0,j,k;
for(j=0;j<=len;j++)
{
for(k=0;k<10;k++)
ans=ans ^ s1[j].frame[k];
s1[j].parity=ans;
}
}
void print(struct s s1[]) // Printing individual frames.
{
int j,k;
for(j=0;j<=len;j++)
{
printf("\n\t%d \t ",s1[j].seq_no);
for(k=0;k<10;k++)
printf("%d",s1[j].frame[k]);
printf("\t %d ",s1[j].parity);
printf("\n");
}
}
void error(int *a) // To give the error to frame.
{
int j;
for(j=0;j<9;j++)
{
a[j]=a[j+1];
}
}
void reciver(struct s s2[])
{
int k,j,flg=1;
error(&s2[0].frame[0]);
parityCount(&s2[0]);
printf("\n\n");
for(j=0;j<=len;j++)
{
if(s2[j].parity != tmp[j].parity)
{
flg=0;
break;
}
else
flg=1;
}
printf("\n\n");
if(flg==0)
printf("\n Wrong Data Recievd..\n");
else
printf("\n Correct Data Recievd..\n");
printf("\n Recived data..\n\n");
print(s2);
}
Written by 'Shojib'
No comments:
Post a Comment