Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- CONTENU : Séance 7 - File de malades
- AUTEUR : Emmmanuel Morin
- CREATION : 29/11/2017
- MODIFICATION : 07/01/2019
- */
- // librairies
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include "pile_dynamique.h"
- #include "file_dynamique.h"
- #include <stdbool.h>
- #define TMIN 0
- #define TMAX 10
- #define AGEJ 1
- #define AGEV 99
- int alea(int x, int y){
- int b = rand()%(x-y)+y;
- return b;
- }
- float aleatemp(){
- int b = rand()%(TMAX-TMIN)+TMIN;
- //float a = (float)b+1/(float)alea(4,1);
- return b;
- }
- t_malade malade (int num){
- t_malade a;
- a.numero = num;
- a.temperature = aleatemp();
- a.age = alea(AGEV,AGEJ);
- if (alea(2,1)%2==1) {
- a.sexe = 'H';
- }else{
- a.sexe = 'F';
- }
- return a;
- }
- // programme principal
- int main() {
- srand(time(NULL));
- // la file des malades
- t_file file_hopital=init_file();
- t_pile piletmp1 = init_pile();
- t_pile piletmp2 = init_pile();
- t_malade tmp;
- t_malade pat;
- t_malade dernier_pat;
- t_malade premier_pat;
- int compteur = 0;
- bool verif = false;
- for (int num = 1; num <= 10; num++) {
- pat = malade(num);
- verif=false;
- printf("patient numéro %d de température %f âge %d
- \n",pat.numero,pat.temperature,pat.age);
- if (file_vide(file_hopital)==true) {
- ajouter(&file_hopital,pat);
- }else{
- dernier_pat = dernier(file_hopital);
- //temp du patient < temp dernier patient
- if (pat.temperature < dernier_pat.temperature){
- ajouter(&file_hopital, pat);
- }else{
- while (file_vide(file_hopital)==false){
- retirer(&file_hopital,&premier_pat);
- if (premier_pat.temperature == pat.temperature ){
- if (premier_pat.age >= pat.age){
- empiler(&piletmp1,premier_pat);
- }
- else{
- empiler(&piletmp1,pat);
- pat = premier_pat;
- }
- if (file_vide(file_hopital)){
- empiler(&piletmp1,pat);
- }
- if(!file_vide(file_hopital) &&
- premier(file_hopital).temperature != pat.temperature){
- empiler(&piletmp1,pat);
- }
- verif=true;
- }
- else if (premier_pat.temperature > pat.temperature){
- empiler(&piletmp1,premier_pat);
- } else if (verif==false){
- empiler(&piletmp1,pat);
- empiler(&piletmp1,premier_pat);
- verif=true;
- } else {
- empiler(&piletmp1,premier_pat);
- }
- }
- }
- }
- while (pile_vide(piletmp1)==false) {
- tmp=depiler(&piletmp1);
- empiler(&piletmp2,tmp);
- }
- while (pile_vide(piletmp2)==false) {
- tmp=depiler(&piletmp2);
- ajouter(&file_hopital,tmp);
- }
- }
- while (file_vide(file_hopital)==false) {
- compteur++;
- retirer(&file_hopital,&tmp);
- printf("Le patient n° %d : %f, age %d
- \n",tmp.numero,tmp.temperature, tmp.age );
- }
- printf("il y a %d malades dans la file\n",compteur);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement