Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h> // inutile je crois dans le code mais on sait jamais
- // définition de deux structures : l'une (ensb) pour les détails du voyage, l'autre (client) pour les informations privées du client
- typedef struct{
- char destination[20];
- int jour;
- int mois;
- int annee;
- }ensb;
- typedef struct{
- int id;
- char nom[20];
- char prenom[20];
- int nbv;
- ensb voy[50]; // détails du voyage
- }client;
- void main()
- {
- int choix,i=0,N=0,j,f,min,posmin=0,k;
- client C[150]; // tableau 'C' qui fait directement référence à la structure 'client' et qui contient ses champs
- ensb B[150]; // de même, sauf que le tableau s'appelle B et prend les champs de la structure 'ensb'
- ensb aux;
- do{
- do{
- printf("\nGestion de voyage : Menu\n");
- printf("1. Remplir un tableau de N clients\n");
- printf("2. Afficher le tableau des clients\n");
- printf("3. Trier les voyages des clients selon l'ordre decroissant de la date\n");
- printf("4. Afficher le voyageur le plus fidele\n");
- printf("5. Afficher la destination la plus demandee pour un voyageur sachant son identifiant\n");
- printf("6. Afficher le mois de l’annee avec le plus grand nombre de reservations\n");
- printf("0. Quitter\n");
- printf("\n");
- printf("R: ");
- scanf("%d",&choix);
- }while(choix <0||choix>6); //contrôle de saisie
- if(choix==1){
- printf("Quel est le nombre N de clients a remplir ? : ");
- scanf("%d",&f);
- for(i=0;i<f;i++){
- printf("Quel est l'identifiant du client ?\n");
- fflush(stdin);
- scanf("%d",&C[i].id);
- printf("Quel est le nom du client ?\n");
- fflush(stdin);
- scanf("%s",&C[i].nom);
- printf("Quel est le prenom du client ?\n");
- fflush(stdin);
- scanf("%s",&C[i].prenom);
- printf("Quel est le nombre de voyages du client ?\n");
- scanf("%d",&C[i].nbv);
- for(j=0;j<C[i].nbv;j++){ //remplissage en fonction du nombre que le client aura donné (nbv)
- printf("Destination : ");
- fflush(stdin);
- gets(C[i].voy[j].destination);
- printf("Date (forme JJ:MM:AAAA) : ");
- fflush(stdin);
- scanf("%d:%d:%d",&C[i].voy[j].jour,&C[i].voy[j].mois,&C[i].voy[j].annee);} // il est important de noter que la forme %d:%d:%d est plus pratique pour l'utilisateur dans notre cas
- }
- }
- else if(choix==2){
- printf("\nAffichage du tableau des clients\n");
- for(i=0;i<f;i++){ // le 'f' pour rappel est le nombre N de clients à remplir
- printf("\n");
- printf("ID : %d | Nom : %s | Prenom : %s | Nombre de voyages : %d\n",C[i].id,C[i].nom,C[i].prenom,C[i].nbv);
- for(j=0;j<C[i].nbv;j++){
- printf("\n");
- printf("Destination : %s. Date de la destination : %d:%d:%d\n",C[i].voy[j].destination,C[i].voy[j].jour,C[i].voy[j].mois,C[i].voy[j].annee);}}
- }
- else if(choix==3)
- {
- printf("Classement des destinations par ordre decroissant\n");
- for(i=0;i<f;i++)
- {
- for(j=0;j<C[i].nbv;j++) // on entre dans les boucles des deux structures
- {
- posmin=j; //posmin prend la première case du tableau
- for(k=j+1;k<C[i].nbv;k++) // nouveau compteur k qui prend la première case du tableau + 1 (j+1)
- {
- if((C[i].voy[k].annee < C[i].voy[posmin].annee) || (C[i].voy[k].annee == C[i].voy[posmin].annee && C[i].voy[k].mois < C[i].voy[posmin].mois) || (C[i].voy[k].annee == C[i].voy[posmin].annee && C[i].voy[k].mois == C[i].voy[posmin].mois && C[i].voy[k].jour < C[i].voy[posmin].jour))
- { //toutes les possibilités pour vérifier le min, exemple : si l'année X est inférieur à l'année Y...
- posmin=k; //quand une de ces conditions est trouvée, posmin prend la valeur k (la valeur validée par le if)
- }
- }
- aux=C[i].voy[k]; //aux qu'on a déclaré au début avec la structure ensb (ensb aux) prend les champs voy[k]
- C[i].voy[k] = C[i].voy[posmin]; // voy[k] prend la valeur de posmin
- C[i].voy[posmin] = aux; //posmin prend à son tour la valeur de aux
- }
- // on affiche ensuite
- printf("\n");
- printf("\nDate de la destination : %d %d %d\n ",C[i].voy[posmin].jour,C[i].voy[posmin].mois,C[i].voy[posmin].annee);
- }
- }
- }while(choix!=0); // on répète le menu tant que le choix n'est pas égal à 0
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement