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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
| #include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* --- déclaration des constantes --- */
#define TAILLE_NOM 10
#define TAILLE_PRENOM 2*TAILLE_NOM
#define NB_NOTES 5 /* nombre de notes par étudiants */
#define MAX 25 /* nombre de notes pour tous les étudiants */
#define MAX_ETUDIANTS 50
/* --- declaration du type etudiant --- */
struct etudiant {
char nom[TAILLE_NOM] ;
char prenom[TAILLE_PRENOM] ;
float notes[MAX];
float moyennes[MAX/NB_NOTES];
float somme;
int age;
} ;
/* --- variables globales --- */
int nbeleves = 0; */
int i, j, k,l;
float tempo;
struct etudiant tab_eleves[MAX_ETUDIANTS];
/* --- procédures et fonctions --- */
void saisie_eleves();
void affichage1();
void affichage2();
void moyennes();
void tri_tab();
int main(void)
{
int choix = -1 ;
/* -- boucle d'affichage du menu -- */
while (choix != 0 )
{
printf(" \n------------------------------------------------------------------\n");
printf(" -1- Saisie d'une liste d'élèves \n");
printf(" -2- Affichage de la liste des noms, prénoms, âges et leurs notes\n");
printf(" -3- Affichage de la liste des noms, prénoms, âges et leurs moyennes\n");
printf(" -4- Affichage uniquement du tableau de moyennes\n");
printf(" -5- Affichage du tri du tableau de moyennes\n");
printf(" -0- Quitter\n");
printf(" --------------------------------------------------------------------\n");
printf("Choix :\n");
scanf("%d",&choix);
/* -- selecteur : appel des procedures -- */
switch (choix)
{
case 1 : saisie_eleves();
break ;
case 2 : affichage1();
break ;
case 3 : affichage2();
break;
case 4 : moyennes();
break;
case 5 : tri_tab();
break;
case 0 : printf("Au revoir \n");
break ;
default: printf("Erreur de saisie\n");
break;
}
}
printf( "\n" );
return EXIT_SUCCESS;
}
void saisie_eleves()
{
i = 0,j = 0, k = 0;
struct etudiant contenue ;
int termine ;
termine = 0;
*/
while ( ! termine )
{
printf( "Entrez un nom ( nom = \"fin\" pour terminer) :" );
scanf( "%s", contenue.nom );
termine = (( strcmp( contenue.nom, "fin" ) ) == 0 );
if ( ! termine )
{
printf( "Entrez un prénom :" );
scanf( "%s", contenue.prenom );
printf( "Entrez un âge :" );
scanf( "%d", &contenue.age );
contenue.somme = 0;
for( j = 0;j < NB_NOTES; j++ )
{
printf("notes : ");
scanf("%f",contenue.notes+j);
/* calcul des 5 1eres notes entrées et dont la somme est affe- */
/* -ctée au champ somme de la variable contenue */
contenue.somme += contenue.notes[j];
/* tous les NB_NOTES lues au clavier, on calcule leur moyenne */
if ((j+1)%NB_NOTES == 0)
{
contenue.moyennes[(j+1)/NB_NOTES - 1] = contenue.somme/NB_NOTES;
contenue.somme = 0;
}
}
/* affectation du contenu de la variable struct au tableau */
/* tab_eleve[] déclaré en variable globale */
tab_eleves[nbeleves] = contenue ;
nbeleves++ ;
} /* fin de la 1ere condition if */
printf( "\n" );
} /* fin de la boucle while */
/* on met a jour la variable de controle du tableau */
}
/* --- fonction affichage nom, prénom, âge et nombre de notes --- */
void affichage1()
{
int i;
printf( "\n----- Virification saisie ------\n" );
for ( i = 0; i < nbeleves; i++ )
{
printf( "\neleve %2d : ", ( i + 1 ) );
printf( "%10s %10s ", tab_eleves[i].nom, tab_eleves[i].prenom );
printf( "%2d \n", tab_eleves[i].age );
printf( "\nNotes :" );
for ( j = 0; j < NB_NOTES; j++ )
printf( "%6.2f", tab_eleves[i].notes[j] );
printf( "\n" );
}
}
/* --- fonction affichage nom, prénom et moyenne --- */
void affichage2()
{
printf( "\nNoms, prénoms et moyennes :\n" );
for (i = 0; i < nbeleves; i++)
{
printf("\n%10s %10s %6.2f\n", tab_eleves[i].nom,
tab_eleves[i].prenom, tab_eleves[i].moyennes[k]);
}
}
/* --- fonction affichage tableau des moyennes --- */
void moyennes()
{
printf("\nTableau des moyennes :\n");
for (i = 0; i < NB_NOTES; i++)
printf("\n%6.2f\n", tab_eleves[i].moyennes[k]);
}
void tri_tab()
{
/* --- TRI du tableau --- */
for (i = 0 ; i < NB_NOTES ; i++)
{
/* boucle inverse, d'inversion des cases */
while ( (k > 0) && (tab_eleves[i].moyennes[k] < tab_eleves[i].moyennes[k-1]) )
{
tempo = tab_eleves[i].moyennes[k-1] ;
tab_eleves[i].moyennes[k-1] = tab_eleves[i].moyennes[k];
tab_eleves[i].moyennes[k--] = tempo;
}
}
printf("Les valeurs triées sont :\n");
for (i = 0 ; i < NB_NOTES ; i++)
printf("%6.2f", tab_eleves[i].moyennes[k]);
printf("\n");
}
/* ------------------------------------------------- */ |
Partager