Bonjour à tous,
Voici quelques jours que j'essaye de faire un programme (assez classique) utilisant des structures, des tableaux et donc des mallocs.
Voici mes structures :
Je créer un tableau de T_AnneeSection comme ceci :
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 typedef struct{ char rue[MAX_CHAR]; char ville[MAX_CHAR]; int num; int cp; }T_Adresse; typedef struct { char matricule[MAX_CHAR]; char nom[MAX_CHAR]; char prenom[MAX_CHAR]; double tabCotes[5]; double moyennePourcentage; T_Adresse adr; }T_Etudiant; typedef struct{ char nomCours[MAX_CHAR]; int ponderation; }T_Cours; typedef struct{ int nbEtu; T_Etudiant * classe; }T_Classe; // Definition d'une annee/section (1TI) typedef struct{ char nomAnneeSection[MAX_CHAR]; int nbClasses; char *nomClasse; // Tableau contenant le nom des cours. (1TM1) int nbCoursParEtudiant; T_Cours *tabCours; T_Classe *tabClasse; }T_AnneeSection;
Que je passe à la fonction afficherMenuGlobal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part T_AnneeSection * tabAnneeSection = NULL; // Ecole (tabAnnneeSection)
Je veux donc créer 1 anneeSection dans le tableau tab.
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 void afficherMenuGlobal(T_AnneeSection * tab) { tab = malloc(INCREMENTALLOC * sizeof(T_AnneeSection)); int choix = 0, nbrAnneeSection = 0, i = 0; printf("1. Charger le tableau d'annee/section.\n"); printf("2. Creer une annee/section\n\n"); scanf("%d", &choix); if(choix == 2) { for(i = 0 ; i < 2 ; i++) demanderInfo(tab); } }
Grâce à la méthode suivante :
Mais il y'a une erreur d’exécution, dès que je demande le nom des classes dans la première boucle for de demanderInfo().
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 /*Permet de créer 1 anneeSection */ void demanderInfo(T_AnneeSection * anneeSection) { int i = 0; printf("Nom (ex : 1TI) : "); fflush(stdin); gets(anneeSection->nomAnneeSection); printf("Nombre de Classes : "); fflush(stdin); gets(anneeSection->nbClasses); anneeSection->tabClasse = (T_Classe *)malloc(anneeSection->nbClasses * sizeof(T_Classe)); for(i = 0 ; i < anneeSection->nbClasses ; i++) { printf("\t Nom de la classe %d (ex : 1TM1) : ", i+1); fflush(stdin); gets(anneeSection->nomClasse[i]); } printf("Nombre de cours par etudiant : "); fflush(stdin); scanf("%d", anneeSection->nbCoursParEtudiant); anneeSection->tabCours = malloc(anneeSection->nbCoursParEtudiant * sizeof(T_Cours)); for(i = 0 ; i < anneeSection->nbCoursParEtudiant ; i++) { printf("\t Nom du cours %d : ", i+1); gets(anneeSection->tabCours[i].nomCours); printf("\t Ponderation de ce cours : "); scanf("%d", anneeSection->tabCours[i].ponderation); } }
De plus, j'envoie tab dans demanderInfo, et non tab[i], car j'ai une erreur de compilation ... Pourquoi ?
Désolé pour ce long énoncé, mais je ne voyais pas comment expliquer autrement ...
Un énorme merci à ceux qui prendront la peine d'y jeter un coup d'oeil.
Cordialement,
Mornor.
Partager