The text below is selected, press Ctrl+C to copy to your clipboard. (⌘+C on Mac) No line numbers will be copied.
Guest
Q1
By Guest on 23rd November 2022 07:11:11 PM | Syntax: TEXT | Views: 1



New paste | Download | Show/Hide line no. | Copy text to clipboard
  1. #include<iostream>
  2. #include<ctime>
  3. #include<stdlib.h>
  4. using namespace std;
  5. class CRC{
  6.         int ds,gs,rsize,*data,*gen,*temp,size,*div;
  7.         public:
  8.                 CRC();
  9.                 ~CRC();
  10.                 void input();
  11.                 void zero_append();
  12.                 void divide();
  13.                 void check();
  14. };
  15. CRC::CRC()
  16. {
  17.         cout<<"Enter the number of data bits: ";
  18.         cin>>ds;
  19.         cout<<"Enter the size of generator bits :";
  20.         cin>>gs;
  21.         data=new int[ds];
  22.         gen=new int[gs];
  23.         temp=new int[ds+gs-1];
  24. }
  25. CRC::~CRC()
  26. {
  27.         cout<<endl<<"Destructor called ";
  28.         delete[] data;
  29.         delete[] gen;
  30. }
  31. void CRC::input()
  32. {
  33.         cout<<"Enter the data bits "<<endl;
  34.         for(int i=0;i<ds;i++)
  35.         {
  36.                 cin>>data[i];
  37.         }
  38.         cout<<"Enter the generator bits "<<endl;
  39.         for(int i=0;i<gs;i++)
  40.         {
  41.                 cin>>gen[i];
  42.         }
  43. }
  44. void CRC::zero_append()
  45. {
  46.         for(int i=0;i<ds+gs-1;i++)
  47.         {
  48.                 if(i<ds)
  49.                 {
  50.                         temp[i]=data[i];
  51.                 }
  52.                 else
  53.                 {
  54.                         temp[i]=0;
  55.                 }
  56.         }
  57. }
  58. void CRC::divide()
  59. {
  60.         for(int i=0;i<ds;i++)
  61.         {
  62.                 int k=i;
  63.                 int j=0;
  64.                 if(temp[k]>=gen[j])
  65.                 {
  66.                         for(j=0,k=i;j<gs;j++,k++)
  67.                         {
  68.                                 if((temp[k]==1 && gen[j]==1) ||(temp[k]==0 && gen[j]==0))
  69.                                 {
  70.                                         temp[k]=0;
  71.                                 }
  72.                                 else
  73.                                 temp[k]=1;
  74.                         }
  75.                 }
  76.         }
  77.         rsize=gs-1;
  78.         div=new int[rsize];
  79.         for(int i=0,j=ds;i<rsize;i++,j++)
  80.         {
  81.                 div[i]=temp[j];
  82.         }
  83.         cout<<"CRC BITS :";
  84.         for(int i=0;i<rsize;i++)
  85.         {
  86.                 cout<<div[i]<<" ";
  87.         }
  88.         for(int i=0;i<ds;i++)
  89.         {
  90.                 temp[i]=data[i];
  91.         }
  92.         for(int i=ds,j=0;i<(ds+gs-1);i++,j++)
  93.         {
  94.                 temp[i]=div[j];
  95.         }
  96.         cout<<endl;
  97. }
  98. void CRC::check()
  99. {
  100.         size=ds+gs-1;
  101.         int flag=0;
  102.         cout<<"CODE WORD GENERATED IS ";
  103.         for(int i=0;i<(ds+gs-1);i++)
  104.         {
  105.                 cout<<temp[i]<<" ";
  106.         }
  107.         cout<<endl<<"AT RECEIVER'S END ";
  108.         srand(time(0));
  109.         int r=(rand()%size);
  110.         int r1=(rand()%2);
  111.         temp[r]=r1;
  112.         cout<<"Message received : ";
  113.         for(int i=0;i<size;i++)
  114.         {
  115.                 cout<<temp[i]<<" ";
  116.         }
  117.         cout<<endl;
  118.         divide();
  119.         for(int i=0;i<rsize;i++)
  120.         {
  121.                 if(div[i]==0)
  122.                 {
  123.                         flag=0;
  124.                 }
  125.                 else
  126.                 flag=1;
  127.                 break;
  128.         }
  129.         if(flag==0)
  130.         cout<<"Data transmitted successfully! "<<endl;
  131.         else
  132.         cout<<"Error occured!"<<endl;
  133. }
  134. int main()
  135. {
  136.         CRC obj;
  137.         obj.input();
  138.         obj.zero_append();
  139.         obj.divide();
  140.         obj.check();
  141.         return 0;
  142. }



  • Recent Pastes