0% ont trouvé ce document utile (0 vote)
20 vues12 pages

Gestion des étudiants et notes en C

Transféré par

aziz.sridi18
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues12 pages

Gestion des étudiants et notes en C

Transféré par

aziz.sridi18
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 PDF, TXT ou lisez en ligne sur Scribd

Programmation C

Exercice de révision

Mme. Feyrouz Hamdaoui


ET AU. 2024/2025
M. Sofiene ben Ahmed

Gestion des étudiants et des notes


Contexte :
On veut gérer les étudiants et leurs notes dans une école. Chaque étudiant est défini par un
identifiant, un nom, un prénom, une date de naissance, et une liste de notes pour différentes
matières. Une matière est cratérisée par son code son nom et coefficient.

Objectifs :

• Saisir les notes d’un étudiant dans différentes matières (attention aux intégrités des
données).
• Ecrire les informations et les notes d’un étudiant.
• Calculer la moyenne générale de chaque étudiant.
• Ecrire les étudiants ayant une moyenne au-dessus d’un seuil donné.
• Rechercher et Ecrire les informations d’un étudiant par son identifiant.

Spécificités :

• Gestion des matières et des notes par matière.


• Sauvegarder les données des étudiants et des notes et des matières dans des tableaux,

Contraintes d’intégrités

Pour assurer l'intégrité des données dans ce problème, nous devons mettre en place deux
contraintes spécifiques lors de la gestion des notes d'un étudiant :

1. Le code de la matière dans une note doit exister dans le tableau des matières : Cela
signifie que, lors de la saisie d'une note pour une matière donnée, il faut vérifier que la
matière existe dans le tableau de matières.

2. Une même matière ne doit pas apparaître plus d'une fois dans le tableau des notes d'un
étudiant : Lorsqu'on ajoute une note pour une matière, il faut s'assurer que cette
matière n'est pas déjà présente dans la liste des notes de l'étudiant.

1
Correction

Première approche :

Structure Tdate

entier jour

entier mois

entier annee

Fin Structure

Structure TEtud

chaîne mat[20]

Tdate date

réel moy

Fin Structure

Structure Tmat

chaîne code[5]

chaîne titre[30]

entier coefficient

réel note

Fin Structure

Constante N ← 30000 // nombre maximal d'étudiants

Tableau TListeEtud[N] de TEtud

2
Constante M ← 30 // nombre maximal de matières par étudiant

Structure TEtudMat

TEtud Etud

Tableau matiere[M] de Tmat

Fin Structure

Fonction LireDate() : Tdate

Var

date : Tdate

début

Ecrire("Entrer votre date de naissance dans le format (jj/mm/aaaa) :")

Lire([Link], [Link], [Link])

Tant que ([Link] < 1 ou [Link] > 31) ou ([Link] < 1 ou [Link] > 12) ou
([Link] < 1900)

Ecrire("Votre date est invalide. Veuillez entrer une nouvelle date.")

Lire([Link], [Link], [Link])

Fin Tant que

Retourner date

Fin Fonction

Fonction SaisieEtud() : TEtud

Var

Etud : TEtud

début

Ecrire("Entrer les informations sur l'étudiant :")

3
Ecrire("Entrer le matricule :")

Lire([Link])

[Link] ← LireDate()

Répéter

Ecrire("Entrer la moyenne :")

Lire([Link])

Jusqu'à ce que ([Link] ≥ 0)

Retourner Etud

Fin Fonction

Procédure SaisieMatEtud(e : Tableau de Tmat, taille : entier)

Var

i : entier

début

Pour i allant de 0 à taille - 1 Faire

Ecrire("Entrer les informations sur la matière (", i + 1, ") :")

Ecrire("Entrer le code :")

Lire(e[i].code)

Ecrire("Entrer le titre :")

Lire(e[i].titre)

4
Répéter

Ecrire("Entrer le coefficient :")

Lire(e[i].coefficient)

Jusqu'à ce que (e[i].coefficient > 0)

Répéter

Ecrire("Entrer la note :")

Lire(e[i].note)

Jusqu'à ce que (e[i].note >= 0)

Fin Pour

Fin Procédure

Procédure SaisieTout()

Var

i : entier

TListeEtud : Tableau[N] de TEtudMat

début

Pour i allant de 0 à N - 1 Faire

TListeEtud[i].Etud ← SaisieEtud()

SaisieMatEtud(TListeEtud[i].matiere, M)

Fin Pour

Fin Procédure

Procédure Moyenetud(TListeEtud : Tableau de TEtudMat, taille : entier)

5
Var

i, j : entier

sum_notes, sum_coefficients : réel

début

Pour i allant de 0 à taille - 1 Faire

sum_notes ← 0

sum_coefficients ← 0

Pour j allant de 0 à M - 1 Faire

sum_notes ← sum_notes + (TListeEtud[i].matiere[j].note *


TListeEtud[i].matiere[j].coefficient)

sum_coefficients ← sum_coefficients + TListeEtud[i].matiere[j].coefficient

Fin Pour

Si sum_coefficients ≠ 0 Alors

TListeEtud[i].[Link] ← sum_notes / sum_coefficients

Sinon

TListeEtud[i].[Link] ← 0

Fin Si

Fin Pour

Fin Procédure

6
Deuxième méthode

Structure Tdate

entier jour

entier mois

entier annee

Fin Structure

Structure TNote

chaîne code[5]

chaîne titre_matiere[30]

réel valeur

Fin Structure

Structure TEtud

chaîne mat[20]

Tdate date

réel moy

Tableau Notes[M] de TNote

Fin Structure

Structure Tmat

chaîne code[5]

chaîne titre[30]

7
entier coefficient

Fin Structure

Constante N ← 30000 // nombre maximal d'étudiants

Tableau TListeEtud[N] de TEtud

Constante M ← 30 // nombre maximal de matières par étudiant

Structure TEtudMat

TEtud Etud

Tableau matiere[M] de Tmat

Fin Structure

Fonction LireDate() : Tdate

Var

date : Tdate

début

Ecrire("Entrer votre date de naissance dans le format (jj/mm/aaaa) :")

Lire([Link], [Link], [Link])

Tant que ([Link] < 1 ou [Link] > 31) ou ([Link] < 1 ou [Link] > 12) ou
([Link] < 1900)

Ecrire("Votre date est invalide. Veuillez entrer une nouvelle date.")

Lire([Link], [Link], [Link])

Fin Tant que

Retourner date

Fin Fonction

8
Fonction SaisieEtud() : TEtud

Var

Etud : TEtud

début

Ecrire("Entrer les informations sur l'étudiant :")

Ecrire("Entrer le matricule :")

Lire([Link])

[Link] ← LireDate()

Répéter

Ecrire("Entrer la moyenne :")

Lire([Link])

Jusqu'à ce que ([Link] ≥ 0)

Retourner Etud

Fin Fonction

Procédure SaisieMatieres(e : Tableau de Tmat, taille : entier)

Var

i : entier

début

Pour i allant de 0 à taille - 1 Faire

9
Ecrire("Entrer les informations sur la matière (", i + 1, ") :")

Ecrire("Entrer le code :")

Lire(e[i].code)

Ecrire("Entrer le titre :")

Lire(e[i].titre)

Répéter

Ecrire("Entrer le coefficient :")

Lire(e[i].coefficient)

Jusqu'à ce que (e[i].coefficient > 0)

Fin Pour

Fin Procédure

Procédure SaisieNotes(Notes : Tableau de TNote, taille : entier)

Var

i : entier

début

Pour i allant de 0 à taille - 1 Faire

Ecrire("Entrer les informations sur la note de la matière (", i + 1, ") :")

Ecrire("Entrer le code de la matière :")

Lire(Notes[i].code)

Ecrire("Entrer le titre de la matière :")

Lire(Notes[i].titre_matiere)

10
Répéter

Ecrire("Entrer la note :")

Lire(Notes[i].valeur)

Jusqu'à ce que (Notes[i].valeur >= 0)

Fin Pour

Fin Procédure

Procédure SaisieTout()

Var

i : entier

TListeEtud : Tableau[N] de TEtudMat

début

Pour i allant de 0 à N - 1 Faire

TListeEtud[i].Etud ← SaisieEtud()

SaisieMatieres(TListeEtud[i].matiere, M)

SaisieNotes(TListeEtud[i].[Link], M)

Fin Pour

Fin Procédure

Procédure Moyenetud(TListeEtud : Tableau de TEtudMat, taille : entier)

Var

i, j : entier

sum_notes, sum_coefficients : réel

début

11
Pour i allant de 0 à taille - 1 Faire

sum_notes ← 0

sum_coefficients ← 0

Pour j allant de 0 à M - 1 Faire

sum_notes ← sum_notes + (TListeEtud[i].[Link][j].valeur *


TListeEtud[i].matiere[j].coefficient)

sum_coefficients ← sum_coefficients + TListeEtud[i].matiere[j].coefficient

Fin Pour

Si sum_coefficients ≠ 0 Alors

TListeEtud[i].[Link] ← sum_notes / sum_coefficients

Sinon

TListeEtud[i].[Link] ← 0

Fin Si

Fin Pour

Fin Procédure

12

Vous aimerez peut-être aussi