The text below is selected, press Ctrl+C to copy to your clipboard. (⌘+C on Mac) No line numbers will be copied.
Guest
Q4
By Guest on 24th November 2022 06:04:59 AM | Syntax: TEXT | Views: 2



New paste | Download | Show/Hide line no. | Copy text to clipboard
  1. #include<iostream>
  2. #include<cmath>
  3. #include<conio.h>
  4. #include<stdlib.h>
  5. #include<ctime>
  6. using namespace std;
  7. class Q4{
  8.         public:
  9.                 int a,m,s,*arr,ws;
  10.                 Q4();
  11.                 void correctframe(int);
  12.                 void acknowledgementlost(int);
  13.                 void framelost(int);
  14.                 void delayinframe(int);
  15.                 void window(int);
  16.                 void resend(int);
  17. };
  18. Q4::Q4(){
  19.         cout<<"Enter the number of frames: ";
  20.         cin>>a;
  21.         cout<<"Enter the window size(value of m): ";
  22.         cin>>m;
  23.         s=pow(2,m-1);
  24.         cout<<"Window size:"<<s<<endl;
  25.         ws=pow(2,m);
  26.         arr=new int[s];
  27.         cout<<"Sequence of sending frame :"<<ws<<endl;
  28.         cout<<"Sequencial numbers of rame to be used :";
  29.         for(int i=0;i<ws;i++)
  30.         {
  31.                 cout<<i<<"  ";
  32.         }cout<<endl;
  33. }
  34. void Q4::correctframe(int i)
  35. {
  36.                 cout<<"\t\t\tRecieving Frames from Sender"<<endl;
  37.                 cout<<"\t\t\t\tSending acknowledgement to sender"<<endl;
  38.                 getch();
  39.                 cout<<"Acknowledgement recieved for frame f"<<(i-1)%ws<<"\n";
  40.                 getch();
  41.                
  42. }
  43. void Q4::acknowledgementlost(int i)
  44. {
  45.                         cout<<"\t\t\tRecieving Frames from Sender"<<endl;
  46.                         cout<<"\t\t\t\tSending acknowledgement to sender"<<endl;
  47.                         getch();
  48.                         cout<<"\t\t   Acknowledgement lost by the reciever for frame f"<<(i-1)%ws<<"\n";
  49.                         getch();
  50.                 resend(i);
  51.                 getch();
  52.                 cout<<"\t\t\t\tSending acknowledgement to sender"<<endl;
  53.                 cout<<"Acknowledgement recieved for frame f"<<(i-1)%ws<<"\n";
  54.                 getch();
  55.                 cout<<"Sliding Window....Sending next frame"<<endl;
  56.                 getch();
  57. }
  58. void Q4::framelost(int i)
  59. {
  60.                         cout<<"\t\t\tRecieving Frames from Sender"<<endl;
  61.                         cout<<"\t\t   Frame f"<<(i-1)%ws<<" is lost\n";
  62.                         getch();
  63.                 resend(i);
  64.                 getch();
  65.                 cout<<"\t\t\t\tSending acknowledgement to sender"<<endl;
  66.                         getch();
  67.                 cout<<"Acknowledgement recieved for frame f"<<(i-1)%ws<<"\n";
  68.                 getch();
  69.                 cout<<"Sliding Window....Sending next frame"<<endl;
  70.                 getch();
  71. }
  72. void Q4::delayinframe(int i)
  73. {
  74.                         cout<<"\t\t\tRecieving Frames from Sender"<<endl;
  75.                         cout<<"\t\t There is a delay in sending the frame f"<<(i-1)%ws<<" from the sender\n";
  76.                         getch();
  77.                 resend(i);
  78.                 getch();
  79.                 cout<<"\t\t\t\tSending acknowledgement to sender"<<endl;
  80.                         getch();
  81.                 cout<<"Acknowledgement recieved for frame f"<<(i-1)%ws<<"\n";
  82.                 getch();
  83.                 cout<<"Sliding Window....Sending next frame"<<endl;
  84.                 getch();
  85. }
  86. void Q4::resend(int i){
  87.         cout<<"\nFrames in the current window are: ";
  88.         for(int j=0;j<s;j++){
  89.             if((j+i)<=a){
  90.                 arr[j]=j+i;
  91.                 cout<<arr[j]<<" ";     
  92.             }
  93.         }
  94.         cout<<endl;
  95.         getch();
  96.                 cout<<"\nSequencial number Of Frames in window: ";
  97.         for(int j=0;j<s;j++){
  98.             if((j+i)<=a){
  99.                 arr[j]=j+i;
  100.                 cout<<(i+j-1)%ws<<" "; 
  101.             }
  102.         }
  103.         cout<<endl;
  104.         getch();
  105.            /* for(int j=0;j<s;j++){
  106.                 arr[j]=j+i;
  107.                 if((j+i)<=a){
  108.                     cout<<"Frame f"<<(j+i-1)%ws<<" \n";
  109.                 }
  110.             }*/
  111.             int j=0;
  112.            if(j+i<=a)
  113.                 {
  114.             cout<<"Resending frame f"<<(i-1)%ws<<endl;
  115.             getch();
  116.             j++;
  117.                 }
  118. }
  119. void Q4::window(int i){
  120.         cout<<endl;
  121.         for(int j=0;j<s;j++){
  122.             if((j+i)<=a){
  123.                         arr[j]=j+i;
  124.                         if(i==1){
  125.                     cout<<"Sending frame f"<<(j+i-1)%ws<<"\n";
  126.                 }      
  127.                 }
  128.         }
  129.         if(i!=1&&i<=a-s+1){
  130.             cout<<"Sending frame f"<<arr[s-1]<<"\n";
  131.                 getch();
  132.         }
  133.        
  134. }
  135. int main(){
  136.         Q4 obj;
  137.         int r;
  138.         srand(time(0));
  139.         cout<<"SENDER'S SIDE\n                                          RECIEVER'S SIDE"<<endl;
  140.         for(int i=1;i<=obj.a;i++){
  141.             r=rand()%4;
  142.             obj.window(i);
  143.         switch(r){
  144.                 case 0:{
  145.                         obj.correctframe(i);
  146.                         break;
  147.                 }
  148.                 case 1:{
  149.                         obj.acknowledgementlost(i);
  150.                         break;
  151.                 }
  152.                 case 2:{
  153.                         obj.framelost(i);
  154.                         break;
  155.                 }
  156.                 case 3:{
  157.                         obj.delayinframe(i);
  158.                         break;
  159.                 }
  160.                 default:
  161.                         cout<<"Invalid choice\n";
  162.                 }
  163.         }
  164.         cout<<endl<<endl<<"All frames are sent successfully";
  165.         getch();
  166.         return 0;
  167. }



  • Recent Pastes