Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <assert.h>
- #include <math.h>
- #include <string.h>
- #pragma warning (disable : 4996)
- #define MINTOURS 2 //Nombre minimal de tours
- #define MAXTOURS 10 // Nombre maximum de tours
- #define MINEPREUVES 1 //Nombre Maximal d'epreuves
- #define MAXEPREUVES 16 // Nombre maximal d'epreuves
- #define MAXEQUIPE 32 // Nombre d'equipe maximale
- #define NBPATINEURSPAREQUIPES 3 // Nombre de patineurs par equipes
- #define NBEQUIPEPAREPREUVES 2 // Nombre d'equipes par epreuves
- #define LGMOT 30 // Nombre maximal de mot
- #define NUMDOSSARD 101 // Numero dossard
- #define NBCARMAX 80 // Nombre maximal de caracteres
- typedef struct {
- float temps;
- } Mesure;
- typedef struct {
- char nom[LGMOT + 1];
- unsigned int dossard;
- Mesure temps[MAXTOURS];
- unsigned int tourEffectuer;
- } Patineur;
- typedef struct {
- char pays[LGMOT + 1];
- Patineur data[NBPATINEURSPAREQUIPES];
- } Equipe;
- typedef struct {
- unsigned int nbTour;
- } Course;
- typedef struct {
- Course numCourse[MAXEPREUVES];
- } Epreuve;
- typedef struct {
- Epreuve epreuves[MAXEPREUVES];
- Equipe tableauEquipe[MAXEQUIPE];
- } Competition;
- int definition_parcours(Competition* tour) {
- scanf("%d", &tour);
- assert(tour >= MINTOURS && tour <= MAXTOURS);
- return tour;
- }
- void definition_nb_epreuves(int nbEp) {
- scanf("%d", &nbEp);
- assert(nbEp >= MINEPREUVES && nbEp <= MAXEPREUVES);
- }
- void inscrire_equipe(Competition* competition, int* cptEquipeInscrites, int* cptNbPatineurs) {
- Equipe equipe;
- scanf("%s", equipe.pays);
- //Dans une equipe, on inscrit les patineurs
- for (int i = 0; i < NBPATINEURSPAREQUIPES; i++) {
- Patineur p;
- char mot[NBCARMAX + 1];
- p.dossard = NUMDOSSARD + *cptNbPatineurs;
- scanf("%s", mot);
- strcpy(p.nom, mot);
- equipe.data[i] = p;
- printf("inscription dossard %d\n", p.dossard);
- (*cptNbPatineurs)++;
- }
- //On enregistre l'equipe dans la competition
- competition->tableauEquipe[*cptEquipeInscrites] = equipe;
- (*cptEquipeInscrites)++;
- }
- void afficher_equipes(const Competition* competition, int* cptEquipeInscrites) {
- int i = 0;
- for (int i = 0; i < *cptEquipeInscrites; i++) {
- printf("%s ", competition->tableauEquipe[i].pays);
- for (int j = 0; j < NBPATINEURSPAREQUIPES; j++) {
- printf("%s %d ", competition->tableauEquipe[i].data[j].nom, competition->tableauEquipe[i].data[j].dossard);
- }
- printf("\n");
- }
- }
- void enregistrer_temps(Competition* competition) {
- int dossard = 0;
- unsigned int tour = 0;
- float temps = 0;
- int indiceEquipe = 0;
- int indicePatineur = 0;
- int p = 0;
- scanf("%d %d %f", &dossard, &tour, &temps);
- int numInscrit = dossard - NUMDOSSARD;
- indiceEquipe = numInscrit / 3;
- indicePatineur = numInscrit % 3;
- competition->tableauEquipe[indiceEquipe].data[indicePatineur].tourEffectuer = tour;
- competition->tableauEquipe[indiceEquipe].data[indicePatineur].temps[tour].temps = temps;
- }
- void afficher_temps(const Competition* competition) {
- int dossard = 0;
- int indiceEquipe = 0;
- int indicePatineur = 0;
- scanf("%d", &dossard);
- int numInscrit = dossard - NUMDOSSARD;
- indiceEquipe = numInscrit / 3;
- indicePatineur = numInscrit % 3;
- int tourEffectuer = competition->tableauEquipe[indiceEquipe].data[indicePatineur].tourEffectuer;
- for (int i = 0; i < tourEffectuer; i++) {
- printf("%s ", competition->tableauEquipe[indiceEquipe].pays);
- printf("%s ", competition->tableauEquipe[indiceEquipe].data[indicePatineur].nom);
- printf("%.1f ", competition->tableauEquipe[indiceEquipe].data[indicePatineur].temps[i + 1].temps);
- printf("\n");
- }
- }
- void afficher_temps_equipes(const Competition* competition) {
- int course = 0;
- int nbEquipe = 0;
- float tps = 0;
- scanf("%d", &course);
- for (int i = 0; i < NBEQUIPEPAREPREUVES; i++) {
- float temps = 0;
- int a = 0;
- for (int j = 0; j < NBPATINEURSPAREQUIPES; j++) {
- if (temps < competition->tableauEquipe[i].data[j].temps[course].temps) {
- temps = competition->tableauEquipe[i].data[j].temps[course].temps;
- }
- if (competition->tableauEquipe[i].data[j].temps[course].temps < 0) {
- a = 1;
- }
- }
- if (a == 1) {
- printf("Temps indisponible pour l'equipe %s\n", competition->tableauEquipe[i].pays);
- }
- else {
- printf("%s ", competition->tableauEquipe[i].pays);
- printf("%.1f ", temps);
- printf("\n");
- }
- }
- }
- void detection_fin_poursuite(Competition* competition, int tour) {
- int nbtour = tour;
- int equip = 0;
- for (int i = 0; i < NBEQUIPEPAREPREUVES; i++) {
- float temps = 0;
- int non = 0;
- for (int j = 0; j < NBPATINEURSPAREQUIPES; j++) {
- if (temps < competition->tableauEquipe[i].data[j].temps[tour].temps) {
- temps = competition->tableauEquipe[i].data[j].temps[tour].temps;
- }
- }
- printf("%s ", competition->tableauEquipe[i].pays);
- printf("%.1f ", temps);
- printf("\n");
- }
- }
- }
- int main() {
- int* cptEquipesInscrites = 0;
- int* cptNbPatineurs = 0;
- Competition c;
- Competition* competition = &c;
- Course crs;
- Course* course = &crs;
- int tour = 0;
- int nbEp = 0;
- int patMax = NBPATINEURSPAREQUIPES;
- char mot[LGMOT + 1];
- int detect = 0;
- while (1) {
- scanf("%s", mot);
- // si la commande est "definir_parcours"
- if (strcmp(mot, "inscrire_equipe") == 0) {
- inscrire_equipe(&c, &cptEquipesInscrites, &cptNbPatineurs);
- }
- // si la commande est "definir_parcours"
- if (strcmp(mot, "definir_parcours") == 0) {
- // apppeler la fonction definition_parcours
- tour = definition_parcours(tour);
- }
- // si la commande est "definir_nombre_epreuves"
- if (strcmp(mot, "definir_nombre_epreuves") == 0) {
- // apppeler la fonction definition_parcours
- definition_nb_epreuves(nbEp);
- }
- if (strcmp(mot, "afficher_equipes") == 0) {
- afficher_equipes(&c, &cptEquipesInscrites);
- }
- if (strcmp(mot, "enregistrer_temps") == 0) {
- detect++;
- enregistrer_temps(&c);
- if (detect == (NBPATINEURSPAREQUIPES * NBEQUIPEPAREPREUVES * tour)) {
- detection_fin_poursuite(&c, tour);
- }
- }
- if (strcmp(mot, "afficher_temps") == 0) {
- afficher_temps(&c);
- }
- if (strcmp(mot, "afficher_temps_equipes") == 0) {
- afficher_temps_equipes(&c);
- }
- if (strcmp(mot, "exit") == 0) {
- exit(0);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement