Bonjour à tous
Une petite explication de mon application :
Via un menu, l'utilisateur peut ajouter un CD dans une médiathèque et/ou afficher le contenu de la médiathèque.
Lors de l'ajout, le programme demande à l'utilisateur de saisir :
- Id du CD (avec un nbr de caractère imposé)
- Titre du CD
- Année du CD
- Nom de l'artiste
- Prénom de l’artiste
Sachant que j'ai deux structure :
J'ai donc créer une fonction pour la saisi des CD :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 typedef struct { char prenom [20]; char nom[20]; }Interpretes ; typedef struct { char id [8]; char titre [20]; int annee; Interpretes chanteur; } CD;
Puis, j'ai un code qui va trier les albums par année et par titre et les affichent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 // FONCTION D'AJOUT DE CDCD AjoutCD(CD *tbl,int index) { int cont=1; int length=0; do { printf("ID (12 caractéres) : "); scanf("%s%*[^\n]", tbl[index].id); length=strlen(tbl[index].id); if (length!=12) { printf("Format incorrect (le nbr de caractéres doit etre de 8)\n"); viderBuffer(); } viderBuffer(); } while(length!=12); getchar(); printf("Titre (mettre des \'_\' à la place des espaces) : "); scanf("%s%*[^\n]", tbl[index].titre); getchar(); do { printf("annee : "); scanf("%d", &tbl[index].annee); getchar(); if (tbl[index].annee==0) { printf("Veuillez saisir une annee en chiffres !!\n"); viderBuffer(); cont=0; } else { cont=1; } } while(cont==0); printf("Prenom (mettre des \'_\' à la place des espaces) : "); scanf("%s%*[^\n]", tbl[index].chanteur.prenom); getchar(); printf("Nom (mettre des \'_\' à la place des espaces) : "); scanf("%s%*[^\n]", tbl[index].chanteur.nom); getchar(); }
Mon problème (car il y en a un quand même ^), c'est que j'ai un problème à l'affichage des albums :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 // FONCTION D'AFFICHAGE DES CD AVEC TRISvoid AfficheCD(CD tbl[1000],int index) { /* * Tri par années */ int continuer=1; CD temp; while (continuer==1) { continuer=0; for (int i= 0; i<index-1; i++) { if (tbl[i].annee>tbl[i+1].annee) { temp=tbl[i]; tbl[i]=tbl[i+1]; tbl[i+1]=temp; continuer=1; } } } /* * Tri par titre */ int continuer_titre=1; while (continuer_titre==1) { continuer_titre=0; for (int i= 0; i<index; i++) { if (tbl[i].annee==tbl[i+1].annee) { CD temp_titre; int compare; compare=strcmp(tbl[i].titre,tbl[i+1].titre); if (compare>0) { temp_titre=tbl[i]; tbl[i]=tbl[i+1]; tbl[i+1]=temp_titre; continuer_titre=1; } } } } /* * Affichage */ for (int i= 0; i<index; i++) { printf("| %-20s| %-20s| %-7d| %-20s| %-20s|\n", tbl[i].id, tbl[i].titre, tbl[i].annee, tbl[i].chanteur.nom, tbl[i].chanteur.prenom); } }
Le titre s'affiche aussi avec l'ID du CD.
Une idées SVP. J'ai beau chercher, je trouve pas (peut être un manque d’expérience).
Merci d'avance.
Partager