Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.51 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <assert.h>
  5. #include <math.h>
  6. #include <string.h>
  7. #pragma warning (disable : 4996)
  8.  
  9. #define MINTOURS 2 //Nombre minimal de tours
  10. #define MAXTOURS 10 // Nombre maximum de tours
  11. #define MINEPREUVES 1 //Nombre Maximal d'epreuves
  12. #define MAXEPREUVES 16 // Nombre maximal d'epreuves
  13. #define MAXEQUIPE 32 // Nombre d'equipe maximale
  14. #define NBPATINEURSPAREQUIPES 3 // Nombre de patineurs par equipes
  15. #define NBEQUIPEPAREPREUVES 2 // Nombre d'equipes par epreuves
  16. #define LGMOT 30 // Nombre maximal de mot
  17. #define NUMDOSSARD 101 // Numero dossard
  18. #define NBCARMAX 80 // Nombre maximal de caracteres
  19. typedef struct {
  20.     float temps;
  21. } Mesure;
  22.  
  23. typedef struct {
  24.     char nom[LGMOT + 1];
  25.     unsigned int dossard;
  26.     Mesure temps[MAXTOURS];
  27.     unsigned int tourEffectuer;
  28. } Patineur;
  29.  
  30. typedef struct {
  31.     char pays[LGMOT + 1];
  32.     Patineur data[NBPATINEURSPAREQUIPES];
  33. } Equipe;
  34.  
  35. typedef struct {
  36.     unsigned int nbTour;
  37. } Course;
  38.  
  39. typedef struct {
  40.     Course numCourse[MAXEPREUVES];
  41. } Epreuve;
  42.  
  43. typedef struct {
  44.     Epreuve epreuves[MAXEPREUVES];
  45.     Equipe tableauEquipe[MAXEQUIPE];
  46. } Competition;
  47.  
  48.  
  49. void definition_parcours(int tour) {
  50.     scanf("%d", &tour);
  51.     assert(tour >= MINTOURS && tour <= MAXTOURS);
  52. }
  53.  
  54. void definition_nb_epreuves(int nbEp) {
  55.     scanf("%d", &nbEp);
  56.     assert(nbEp >= MINEPREUVES && nbEp <= MAXEPREUVES);
  57. }
  58.  
  59. void inscrire_equipe(Competition* competition, int* cptEquipeInscrites, int* cptNbPatineurs) {
  60.     Equipe equipe;
  61.     char mot[LGMOT + 1];
  62.     scanf("%s", mot);
  63.     strcpy(equipe.pays, mot);
  64.  
  65.     //Dans une equipe, on inscrit les patineurs
  66.     for (int i = 0; i < NBPATINEURSPAREQUIPES; i++) {
  67.         Patineur p;
  68.         char mot[NBCARMAX + 1];
  69.         p.dossard = NUMDOSSARD + *cptNbPatineurs;
  70.         scanf("%s", mot);
  71.         strcpy(p.nom, mot);
  72.         equipe.data[i] = p;
  73.         printf("inscription dossard %d\n", p.dossard);
  74.         (*cptNbPatineurs)++;
  75.  
  76.     }
  77.  
  78.     //On enregistre l'equipe dans la competition
  79.     competition->tableauEquipe[*cptEquipeInscrites] = equipe;
  80.     (*cptEquipeInscrites)++;
  81. }
  82. void afficher_equipes(const Competition* competition, int* cptEquipeInscrites) {
  83.     int i = 0;
  84.     for (int i = 0; i < *cptEquipeInscrites; i++) {
  85.         printf("%s ", competition->tableauEquipe[i].pays);
  86.         for (int j = 0; j < NBPATINEURSPAREQUIPES; j++) {
  87.             printf("%s %d ", competition->tableauEquipe[i].data[j].nom, competition->tableauEquipe[i].data[j].dossard);
  88.         }
  89.         printf("\n");
  90.     }
  91. }
  92.  
  93. void enregistrer_temps(Competition* competition) {
  94.     int dossard = 0;
  95.     unsigned int tour = 0;
  96.     float temps = 0;
  97.     int indiceEquipe = 0;
  98.     int indicePatineur = 0;
  99.     int p = 0;
  100.     scanf("%d %d %f", &dossard, &tour, &temps);
  101.     int numInscrit = dossard - NUMDOSSARD;
  102.     indiceEquipe = numInscrit / 3;
  103.     indicePatineur = numInscrit % 3;
  104.     competition->tableauEquipe[indiceEquipe].data[indicePatineur].tourEffectuer = tour;
  105.     competition->tableauEquipe[indiceEquipe].data[indicePatineur].temps[tour].temps = temps;
  106.  
  107. }
  108.  
  109. void afficher_temps(const Competition* competition) {
  110.     int dossard = 0;
  111.     int indiceEquipe = 0;
  112.     int indicePatineur = 0;
  113.     scanf("%d", &dossard);
  114.     int numInscrit = dossard - NUMDOSSARD;
  115.     indiceEquipe = numInscrit / 3;
  116.     indicePatineur = numInscrit % 3;
  117.     int tourEffectuer = competition->tableauEquipe[indiceEquipe].data[indicePatineur].tourEffectuer;
  118.     for (int i = 0; i < tourEffectuer; i++) {
  119.         printf("%s ", competition->tableauEquipe[indiceEquipe].pays);
  120.         printf("%s ", competition->tableauEquipe[indiceEquipe].data[indicePatineur].nom);
  121.         printf("%.1f ", competition->tableauEquipe[indiceEquipe].data[indicePatineur].temps[i + 1].temps);
  122.         printf("\n");
  123.     }
  124. }
  125.  
  126. void afficher_temps_equipes(Competition* competition) {
  127.     int course = 0;
  128.     int nbEquipe = 0;
  129.     float tps = 0;
  130.     scanf("%d", &course);
  131.     for (int i = 0; i < NBEQUIPEPAREPREUVES; i++) {
  132.         float temps = 0;
  133.         int a = 0;
  134.         for (int j = 0; j < NBPATINEURSPAREQUIPES; j++) {
  135.             if (temps < competition->tableauEquipe[i].data[j].temps[course].temps) {
  136.                 temps = competition->tableauEquipe[i].data[j].temps[course].temps;
  137.             }
  138.             if (competition->tableauEquipe[i].data[j].temps[course].temps < 0) {
  139.                 a = 1;
  140.             }
  141.         }
  142.         if (a == 1) {
  143.             printf("Temps indisponible pour l'equipe %s\n", competition->tableauEquipe[i].pays);
  144.         }
  145.         else {
  146.             printf("%s ", competition->tableauEquipe[i].pays);
  147.             printf("%.1f ", temps);
  148.             printf("\n");
  149.         }
  150.     }
  151. }
  152.  
  153.  
  154. int main() {
  155.     int* cptEquipesInscrites = 0;
  156.     int* cptNbPatineurs = 0;
  157.     Competition c;
  158.     Competition* competition = &c;
  159.     Course crs;
  160.     Course* course = &crs;
  161.     int indiceTour = 0;
  162.     int tour = 0;
  163.     int nbEp = 0;
  164.  
  165.     char mot[LGMOT + 1];
  166.     while (1) {
  167.         scanf("%s", mot);
  168.         // si la commande est "definir_parcours"
  169.         if (strcmp(mot, "inscrire_equipe") == 0) {
  170.             inscrire_equipe(&c, &cptEquipesInscrites, &cptNbPatineurs);
  171.         }
  172.         // si la commande est "definir_parcours"
  173.         if (strcmp(mot, "definir_parcours") == 0) {
  174.             // apppeler la fonction definition_parcours
  175.             definition_parcours(tour);
  176.         }
  177.         // si la commande est "definir_nombre_epreuves"
  178.         if (strcmp(mot, "definir_nombre_epreuves") == 0) {
  179.             // apppeler la fonction definition_parcours
  180.             definition_nb_epreuves(nbEp);
  181.         }
  182.  
  183.         if (strcmp(mot, "afficher_equipes") == 0) {
  184.             afficher_equipes(&c, &cptEquipesInscrites);
  185.         }
  186.         if (strcmp(mot, "enregistrer_temps") == 0) {
  187.             enregistrer_temps(&c);
  188.         }
  189.         if (strcmp(mot, "afficher_temps") == 0) {
  190.             afficher_temps(&c);
  191.         }
  192.         if (strcmp(mot, "afficher_temps_equipes") == 0) {
  193.             afficher_temps_equipes(&c);
  194.         }
  195.         if (strcmp(mot, "exit") == 0) {
  196.             exit(0);
  197.         }
  198.     }
  199.     return 0;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement