Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<iostream>
  4. #include<stdlib.h>
  5. using namespace std;
  6. struct rr
  7. {
  8. char name[10];
  9. int prior;
  10. char state[10];
  11. }proc[10];
  12. int i,j,k,l,m,n;
  13. int main()
  14. {
  15. cout<<"\n introdusca nuemero de procesos \t";
  16. scanf("%d",&n);
  17. for(i=0;i<n;i++)
  18. {
  19. cout<<"\n escriba el nombre del proceso\t";
  20. cin>>proc[i].name;
  21. cout<<"\n introdusca la prioridad del proceso\t";
  22. cin>>proc[i].prior;
  23. strcpy(proc[i].state,"active");
  24. }
  25.  
  26.  
  27. for(i=0;i<n-1;i++)
  28. {
  29. for(j=0;j<n-1;j++)
  30. {
  31. if(proc[j].prior<proc[j+1].prior)
  32. {
  33. char ch[5];
  34. int t=proc[j].prior;
  35. proc[j].prior= proc[j+1].prior;
  36. proc[j+1].prior=t;
  37. strcpy(ch,proc[j].name);
  38. strcpy(proc[j].name,proc[j+1].name);
  39. strcpy(proc[j+1].name,ch);
  40. }
  41. }
  42. }
  43. int min=0;
  44. for(i=0;i<n;i++)
  45. cout<<"\n"<<proc[i].name<<"\t"<<proc[i].prior;
  46. for(i=0;i<n;i++)
  47. {
  48. for(i=0;i<n;i++)
  49. {
  50. if(min<proc[i].prior)
  51. min=proc[i].prior;
  52. }
  53. }
  54. for(i=0;i<n;i++)
  55. {
  56. if(proc[i].prior==min)
  57. {
  58. cout<<"\nprocess "<<proc[i].name<<" select aas coordinator";
  59. strcpy(proc[i].state,"iactive");
  60. break;
  61. }
  62. }
  63. int pr;
  64. while(1)
  65. {
  66. int ch;
  67. cout<<"\n1)selecciona\t";
  68. cout<<"\n 2) salir \t";
  69. cin>>ch;
  70. int max=0;
  71. int ar[20];
  72. k=0;
  73. int fl=0;
  74. switch(ch)
  75. {
  76. case 1: char str[5];
  77.   cout<<"\n 1)intialise election\t";
  78.   cin>>str;
  79.       fl=0;
  80.   l1: for(i=0;i<n;i++)
  81.    {
  82.     if(strcmp(str,proc[i].name)==0)
  83.    {
  84.     pr=proc[i].prior;
  85.    }
  86.     }
  87.   //cout<<"\n"<<pr;
  88.   for(i=0;i<n;i++)
  89.    {
  90.     if(pr<proc[i].prior)
  91.    {
  92.     cout<<"\nproceso "<<str<<" enviar el mensaje "<<proc[i].name;
  93.    }
  94.    }
  95.   for(i=0;i<n;i++)
  96.    {
  97.     if(pr<proc[i].prior && strcmp(proc[i].state,"active")==0 )
  98.    {
  99.    if(fl==0)
  100.    {
  101.     ar[k]= proc[i].prior;
  102.     k++;
  103.    }
  104.     cout<<"\nproceso "<<proc[i].name<<" mensaje enviado correctamente "<<str;
  105.     if(proc[i].prior>max)
  106.     max=proc[i].prior;
  107.  
  108.  
  109.     }
  110.   }
  111.    fl=1;
  112.  
  113.  
  114.  
  115.    if(k!=0)
  116.    {
  117.    k=k-1;
  118.    for(i=0;i<n;i++)
  119.    {
  120.    if(ar[k]==proc[i].prior)
  121.    strcpy(str,proc[i].name);
  122.    }
  123.  
  124.  
  125.    goto l1;
  126.    }
  127.    m=0;
  128.     for(j=0;j<n;j++)
  129.    {
  130.    if(proc[j].prior>m && strcmp(proc[j].state,"active")==0 )
  131.    {
  132.    cout<<"\nproceso "<<proc[j].name <<" is select as new coordinator";
  133.    strcpy(proc[j].state,"inactive");
  134.    break;
  135.    }
  136.    }
  137.  
  138.  
  139.     for(i=0;i<n;i++)
  140.   {
  141.   if(strcmp(proc[i].state,"active")==0 && proc[j].prior>proc[i].prior)
  142.   {
  143.   cout<<"\nproceso "<<proc[j].name<<" enviado alerta de mensaje "<<proc[i].name;
  144.   }
  145.    }
  146.  
  147.  
  148.   break;
  149. case 2:exit(1);
  150.  
  151. }
  152. }
  153. }