0% ont trouvé ce document utile (0 vote)
6 vues5 pages

Programme

Le document décrit la structure d'un programme en C pour gérer des étudiants, incluant des déclarations de bibliothèques, des constantes, des structures et des fonctions auxiliaires. Il présente également les fonctionnalités principales telles que l'affichage des étudiants, la saisie de leurs informations et de leurs notes, ainsi que des algorithmes de tri. Le programme est limité à deux étudiants et utilise des vérifications pour garantir la validité des données saisies.

Transféré par

linterpreteslam5
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues5 pages

Programme

Le document décrit la structure d'un programme en C pour gérer des étudiants, incluant des déclarations de bibliothèques, des constantes, des structures et des fonctions auxiliaires. Il présente également les fonctionnalités principales telles que l'affichage des étudiants, la saisie de leurs informations et de leurs notes, ainsi que des algorithmes de tri. Le programme est limité à deux étudiants et utilise des vérifications pour garantir la validité des données saisies.

Transféré par

linterpreteslam5
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

1.

ncludes et définitions globales

 #include <stdio.h>
o Inclusion de la bibliothèque standard d’entrées/sorties pour printf,
scanf, etc.
 #include <string.h>
o Inclusion pour les fonctions de manipulation de chaînes (strcmp, strlen,
etc.).
 #include <time.h>
o Inutile dans le code tel qu’on le voit (pas utilisé ici). Peut être laissé par
habitude.
 #define Nb_Matieres 6
o Déclare une constante symbolique Nb_Matieres égale à 6. Sert pour
dimensionner les tableaux de notes et les matières.
 #define MAX_Etudiants 2
o Déclare une constante MAX_Etudiants égale à 2. Limite le nombre
d’étudiants que le programme peut gérer.

2. Déclarations globales des matières et crédits

 char Matieres[Nb_Matieres][20] =
{ "[Link]","[Link]","[Link]","[Link]","[Link]","
[Link]" };
o Déclare un tableau de chaînes (noms des matières). Chaque nom peut
faire jusqu’à 19 caractères + terminateur nul.
o Contient 6 matières avec un préfixe numérique et le nom de la matière.

 int credits[Nb_Matieres] = {8,10,8,15,7,12};


o Déclare un tableau d’entiers représentant les crédits associées à
chaque matière. C’est prêt à être utilisé pour des calculs, mais dans le
code fourni il n’est pas utilisé.

3. Définition de la structure Etudiant

 typedef struct {
char Matricule[5];
char Nom[25];
char Prenom[20];
char Sexe;
int Jour_naiss, mois_naiss, annee_naiss;
char Lieu_naissance[31];
float Notes[Nb_Matieres];
} Etudiant;
o Déclare une structure pour représenter un étudiant avec les champs
suivants:
 Matricule: chaîne de 5 caractères (attention: requiert espace
pour le '\0' et 4 caractères utiles).
 Nom: chaîne de 25 caractères.
 Prenom: chaîne de 20 caractères.
 Sexe: caractère (probablement 'M' ou 'F').
 Jour_naiss, mois_naiss, annee_naiss: date de naissance.
 Lieu_naissance: chaîne de 31 caractères.
 Notes: tableau de notes float pour Nb_Matieres matières.

4. Déclarations et initialisations globales

 Etudiant liste[MAX_Etudiants];
o Déclare un tableau global de Etudiant de taille MAX_Etudiants (ici 2).
 int nb_Etudiants = 0;
o Compteur du nombre actuel d’étudiants dans liste, initialisé à 0.

5. Fonctions auxiliaires

 void pause() {
printf("\nAppuyer sur Enter...");
getchar();
getchar();
}
o Fonction qui demande à l’utilisateur d’appuyer sur Enter pour
continuer. Elle lit deux fois pour vider le buffer (avec certaines
configurations, une seule getchar() peut suffire).
 void trierParNom() {
Etudiant temp;
for(int i=0;i<nb_Etudiants-1;i++)
for(int j=i+1;j<nb_Etudiants;j++)
if(strcmp(liste[i].Nom,liste[j].Nom)>0){
temp=liste[i];
liste[i]=liste[j];
liste[j]=temp;
}
}
o Trie les étudiants présents dans liste par ordre alphabétique du nom
(ordre croissant) en utilisant un tri à bulles (bubble sort).
o Utilise la variable globale nb_Etudiants pour déterminer la taille du tri.
o Le swap se fait avec une variable temporaire temp.

 void trierParAge() { // âge croissant = plus vieux d'abord


Etudiant temp;
for(int i=0;i<nb_Etudiants-1;i++)
for(int j=i+1;j<nb_Etudiants;j++)
if(liste[i].annee_naiss > liste[j].annee_naiss){
temp=liste[i];
liste[i]=liste[j];
liste[j]=temp;
}
}
o Trie les étudiants par année de naissance.
o Le commentaire dit “âge croissant = plus vieux d'abord”, mais la
condition actuelle (annee_naiss > annee_naiss_j) déplace les étudiants
plus jeunes vers le début; en pratique, plus l’année est grande, plus
l’étudiant est jeune. Donc le commentaire ne correspond pas
exactement à l’effet réel. Pour un tri “plus vieux d’abord” on
mettrait < ou inverser l’ordre.
6. Partie principale: int main()

 int main() {
o Point d’entrée du programme.
 int choix;
o Déclare une variable choix pour stocker l’option du menu.
 do { ... } while (choix != 9);
o Boucle principale qui affiche le menu, lit le choix et exécute l’action
correspondante. La condition de sortie est probablement lorsque
l’utilisateur choisit 9 (Sortir), bien que la fin du fichier ne montre pas le
cas 9; on suppose qu’il y a un cas 9 plus bas ou que le reste du code
complète le menu.
 Dans le corps de la boucle:

o Affichage du titre et du menu avec printf.

o scanf("%d",&choix);
 Lit le choix de l’utilisateur.
o switch(choix) { ... }
 Exécute le bloc correspondant au choix saisi.

7. Cas 1: afficher par ordre alphabétique


ケース 1
case 1:

 if(nb_Etudiants==0)
printf("Aucun etudiant\n");
o Si aucun étudiant n’est enregistré, affiche ce message.
 else {
trierParNom();
for(int i=0;i<nb_Etudiants;i++)
printf("%s %s ne le %02d/%02d/%04d a %s - %c - %s\n",
liste[i].Nom,liste[i].Prenom,
liste[i].Jour_naiss,liste[i].mois_naiss,
liste[i].annee_naiss,liste[i].Lieu_naissance,
liste[i].Sexe,liste[i].Matricule);
}
o Trie les étudiants par nom avec trierParNom().
o Puis boucle sur nb_Etudiants et affiche pour chaque étudiant: Nom,
Prenom, date de naissance formatée, Lieu_naissance, Sexe, Matricule.
o Le message utilise une phrase en français: “Nom Prenom ne le
Jour/mois/année a Lieu - Sexe - Matricule” (grammaire un peu
étranglée; on peut ajuster la mise en forme).

 pause();

 break;

8. Cas 2: Saisie étudiants


case 2:
 if(nb_Etudiants>=2)
printf("Limite de 2 etudiants atteinte\n");
o Vérifie si on a atteint MAX_Etudiants (2). Si oui, affiche le message.
 else { ... }
o Sinon, entre dans une série de saisies pour ajouter un nouvel étudiant à
liste[nb_Etudiants].
 Saisie et validations successives:
o Matricule: lit avec scanf("%s", liste[nb_Etudiants].Matricule); vérifie que
strlen ≤ 5; répète sinon.
o Nom: lit et vérifie longueur ≤ 25.
o Prenom: lit et vérifie longueur ≤ 20.
o Sexe: lit un caractère avec scanf(" %c", &liste[nb_Etudiants].Sexe);
accepte seulement 'M' ou 'F'; rejoue sinon.
o Jour_naiss: lit int et vérifie 1..31.
o Mois_naiss: lit int et vérifie 1..12.
o Annee_naiss: lit int et vérifie 1900..2100.
o Lieu_naissance: lit une chaîne et vérifie longueur ≤ 30.
o Pour i de 0 à Nb_Matieres-1, initialise liste[nb_Etudiants].Notes[i] à 0.
o nb_Etudiants++;
o printf("Ajoute avec succes\n");

 pause();

 break;

9. Cas 3: Saisie des notes (partiellement montré)


case 3:

 if(nb_Etudiants==0)
printf("Aucun Etudiant\n");
o Si aucun étudiant, avertit.
 else {
for(int i=0;i<nb_Etudiants;i++)
printf("%d. %s %s\n",i+1,liste[i].Nom,liste[i].Prenom);
int num;
printf("Choisir: "); scanf("%d",&num);
if(num>=1 && num<=nb_Etudiants)
for(int i=0;i<Nb_Matieres;i++){
do{
printf("%s (0-20): ",Matieres[i]);
scanf("%f",&liste[num-1].Notes[i]);
}while(liste[num-1].Notes[i]<0 || liste[num-1].Notes[i]>20);
}
}

 Affiche la liste des étudiants avec leur numéro, demande à l’utilisateur d’en
choisir un.

 Si le choix est valide, pour chaque matière, demande la note entre 0 et 20 et


stocke dans Notes[i] du bon étudiant (num-1).
 Chaque saisie est répétée tant que la note n’est pas dans [0, 20].

 pause();

 break;

Vous aimerez peut-être aussi