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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define VIDE fflush(stdin)
/*
* Tableau dynamique de pointeurs vers des élèves alloués dynamiquement
*/
typedef struct eleve {
char nom[40];
char sexe ;
int age ;
} ELEVE ;
ELEVE **ajouter (ELEVE **ptab, int *pn) ;
void afficher (ELEVE **ptab, int n) ;
int question(void) ;
void encoder_eleve(ELEVE *) ;
void afficher_eleve(ELEVE *) ;
void libere_mem(ELEVE **ptab, int n) ;
int main(int argc, char** argv) {
ELEVE **ptab_eleve ;
int nb_eleve ;
ptab_eleve = NULL ;
nb_eleve = 0 ;
ptab_eleve = ajouter(ptab_eleve, &nb_eleve);
afficher(ptab_eleve, nb_eleve);
libere_mem(ptab_eleve,nb_eleve) ;
return (EXIT_SUCCESS);
}
int question()
{
char reponse[254] ;
strcpy(reponse,"O");
printf ("\nVoulez_vous ajouter un eleve?") ;
gets(reponse) ;
if (!strcmp(reponse,"O") || !strcmp(reponse,"o"))
return 1 ;
else
return 0 ;
}
void encoder_eleve(ELEVE *peleve){
printf("\nNom:");
gets(peleve->nom) ;
printf("\nSexe:") ;
scanf("%c",&(peleve->sexe));
VIDE ;
printf("\nAge:") ;
scanf("%d",&(peleve->age));
VIDE ;
}
ELEVE **ajouter(ELEVE **ptab, int *pn)
{
ELEVE *peleve ;
int nb_eleve ;
nb_eleve = *pn ;
while (question())
{
ptab = (ELEVE **)realloc(ptab,(nb_eleve+1) * sizeof(ELEVE *)) ;
peleve = (ELEVE *)malloc(sizeof(ELEVE)) ;
encoder_eleve(peleve) ;
*(ptab+nb_eleve) = peleve ;
nb_eleve++ ;
}
*pn = nb_eleve ;
return ptab ;
}
void afficher_eleve(ELEVE *pel)
{
printf("\nNom: %s", pel->nom);
printf("\nSexe: %c", pel->sexe) ;
printf("\nAge: %d", pel->age) ;
}
void afficher (ELEVE **ptab, int n) {
int i ;
printf("\n:%d: eleve(s)",n);
for (i = 0; i < n; i++)
{
afficher_eleve(*(ptab+i)) ;
printf("\n") ;
}
}
void libere_mem(ELEVE **ptab, int n)
{
int i ;
for (i = 0; i < n; i++)
{
free(*(ptab+i)) ;
}
free (ptab) ;
} |
Partager