Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. /*
  2. CONTENU : Séance 7 - File de malades
  3. AUTEUR : Emmmanuel Morin
  4. CREATION : 29/11/2017
  5. MODIFICATION : 07/01/2019
  6. */
  7.  
  8. // librairies
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <time.h>
  12. #include "pile_dynamique.h"
  13. #include "file_dynamique.h"
  14. #include <stdbool.h>
  15.  
  16. #define TMIN 0
  17. #define TMAX 10
  18. #define AGEJ 1
  19. #define AGEV 99
  20.  
  21. int alea(int x, int y){
  22. int b = rand()%(x-y)+y;
  23. return b;
  24. }
  25.  
  26. float aleatemp(){
  27. int b = rand()%(TMAX-TMIN)+TMIN;
  28. //float a = (float)b+1/(float)alea(4,1);
  29. return b;
  30. }
  31.  
  32. t_malade malade (int num){
  33. t_malade a;
  34. a.numero = num;
  35. a.temperature = aleatemp();
  36. a.age = alea(AGEV,AGEJ);
  37. if (alea(2,1)%2==1) {
  38. a.sexe = 'H';
  39. }else{
  40. a.sexe = 'F';
  41. }
  42. return a;
  43. }
  44.  
  45.  
  46. // programme principal
  47. int main() {
  48. srand(time(NULL));
  49. // la file des malades
  50. t_file file_hopital=init_file();
  51. t_pile piletmp1 = init_pile();
  52. t_pile piletmp2 = init_pile();
  53. t_malade tmp;
  54. t_malade pat;
  55. t_malade dernier_pat;
  56. t_malade premier_pat;
  57. int compteur = 0;
  58. bool verif = false;
  59. for (int num = 1; num <= 10; num++) {
  60. pat = malade(num);
  61. verif=false;
  62. printf("patient numéro %d de température %f âge %d
  63. \n",pat.numero,pat.temperature,pat.age);
  64. if (file_vide(file_hopital)==true) {
  65.  
  66. ajouter(&file_hopital,pat);
  67. }else{
  68. dernier_pat = dernier(file_hopital);
  69. //temp du patient < temp dernier patient
  70. if (pat.temperature < dernier_pat.temperature){
  71. ajouter(&file_hopital, pat);
  72. }else{
  73. while (file_vide(file_hopital)==false){
  74. retirer(&file_hopital,&premier_pat);
  75. if (premier_pat.temperature == pat.temperature ){
  76. if (premier_pat.age >= pat.age){
  77. empiler(&piletmp1,premier_pat);
  78.  
  79. }
  80. else{
  81. empiler(&piletmp1,pat);
  82. pat = premier_pat;
  83.  
  84. }
  85. if (file_vide(file_hopital)){
  86. empiler(&piletmp1,pat);
  87. }
  88. if(!file_vide(file_hopital) &&
  89. premier(file_hopital).temperature != pat.temperature){
  90. empiler(&piletmp1,pat);
  91. }
  92. verif=true;
  93. }
  94. else if (premier_pat.temperature > pat.temperature){
  95. empiler(&piletmp1,premier_pat);
  96. } else if (verif==false){
  97. empiler(&piletmp1,pat);
  98. empiler(&piletmp1,premier_pat);
  99. verif=true;
  100. } else {
  101. empiler(&piletmp1,premier_pat);
  102. }
  103. }
  104. }
  105. }
  106. while (pile_vide(piletmp1)==false) {
  107. tmp=depiler(&piletmp1);
  108. empiler(&piletmp2,tmp);
  109. }
  110. while (pile_vide(piletmp2)==false) {
  111. tmp=depiler(&piletmp2);
  112. ajouter(&file_hopital,tmp);
  113. }
  114. }
  115. while (file_vide(file_hopital)==false) {
  116. compteur++;
  117. retirer(&file_hopital,&tmp);
  118. printf("Le patient n° %d : %f, age %d
  119. \n",tmp.numero,tmp.temperature, tmp.age );
  120. }
  121. printf("il y a %d malades dans la file\n",compteur);
  122. return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement