Voici une petite aide, mais il s'agit d'un algo, à toi ensuite de le traduire dans le language voulu :
Classique :
PROGRAMME MOYENNES
tableau chaîne : noms(36), matieres(4)
tableau réel : moyennes(36,4)
tableau réel : moy_genes(36)
chaîne : eleve
réel : total
entier : i, mat, nbnotes
booléen : trouve
enreg : enr_eleve
{ entier : num_eleve
chaine : nom_eleve }
enreg : enr_note
{ entier : num_eleve
entier : num_matiere
réel : moyenne }
fichier de enr_note : f_note
fichier de enr_eleve : f_eleve
enr_note : vnote
enr_eleve : veleve
Début
ouvrir (f_note, f_eleve)
matieres (1) = "Français"
matieres (2) = "Math"
matieres (3) = "Langue"
matieres (4) = "Sciences"
Pour (i = 1 à 36)
noms(i) = ""
moy_genes(i) = -1
Pour (mat = 1 à 4)
moyennes(i, mat) = -1
Fpour
Fpour
Lire(f_eleve, veleve)
Tant que (NON FF(f_eleve))
Si (veleve.num_eleve >= 1 ET veleve.num_eleve <= 36)
noms (veleve.num_eleve) = veleve.nom_eleve
Fsi
Lire (f_eleve, veleve)
Ftq
Lire(f_note, vnote)
Tant que (NON FF(f_note))
Si(vnote.num_eleve >= 1 ET vnote.num_eleve <= 36 ET vnote.num_matiere >= 1 ET vnote.num_matiere <= 4)
moyennes(vnote.num_eleve,vnote.num_matiere)=vnote.moyenne
Fsi
Lire(f_note,vnote)
Ftq
fermer(f_note,f_eleve)
nbnotes = 0
Pour (i = 1 à 36)
total = 0
Pour (j = 1 à 4)
Si (moyennes(i,j) > -1)
total = total+moyennes(i,j)
nbnotes = nbnotes + 1
Fsi
Fpour
moy_genes(i) = total / nbnotes -1
Fpour
Saisir(eleve)
Tant que (eleve <> "")
i = 1
trouve = FAUX
Tant que (trouve = FAUX ET i <= 36)
Si (noms(i) = eleve)
trouve = VRAI
Sinon
i = i + 1
Fsi
Ftq
Si (trouve = VRAI)
Pour (mat = 1 à 4)
Afficher (matieres(mat), moyennes (i,mat))
Fpour
Afficher ("Moyenne générale", moy_genes(i))
Sinon
Afficher ("nom inexistant")
Fsi
Saisir(eleve)
Ftq
Fin
et maintenant revoici le même , mais avec des procédures et des fonctions :
PROGRAMME MOYENNES
constante : FIN 36
enreg : enr_eleve
{ entier : num_eleve
chaine : nom_eleve }
enreg : enr_note
{ entier : num_eleve
entier : num_matiere
réel : moyenne }
fichier de enr_note : f_note
fichier de enr_eleve : f_eleve
enr_note : vnote
enr_eleve : veleve
Début
Lancer
Fin
Procédure Lancer
tableau chaîne : noms(FIN), matieres(4)
tableau réel : moyennes(FIN,4)
tableau réel : moy_genes(FIN)
Début
init_tableau (noms(), matieres(), moyennes(), moy_genes(),FIN)
charger_tableau (noms(), matieres(), moyennes(), moy_genes(),FIN)
calcul_moyennes (moyennes(), moy_genes(),FIN)
recherche_tableau (noms(), matieres(), moyennes(), moy_genes(), FIN)
Fin
Procédure : init_tableau (adr.tableau chaîne : noms(), adr.tableau chaîne : matieres(), adr.tableau réel : moyennes(),
adr.tableau réel : moy_genes(), val.entier : maxi)
entier : i, mat
Début
ouvrir(f_eleve, f_note)
matieres (1) = "Français"
matieres (2) = "Math"
matieres (3) = "Langue"
matieres (4) = "Sciences"
Pour (i = 1 à maxi)
noms(i) = ""
moy_genes(i) = -1
Pour (mat = 1 à 4)
moyennes(i, mat) = -1
Fpour
Fpour
Fin
Fonction entier : charger_tableau (adr.tableau chaîne : noms(), adr.tableau chaîne : matieres(), adr.tableau réel : moyennes(),
adr.tableau réel : moy_genes(), val.entier : maxi)
Début
Lire(f_eleve, veleve)
Tant que (NON FF(f_eleve))
Si (veleve.num_eleve >= 1 ET veleve.num_eleve <= maxi)
noms (veleve.num_eleve) = veleve.nom_eleve
Fsi
Lire (f_eleve, veleve)
Ftq
Lire(f_note, vnote)
Tant que (NON FF(f_note))
Si(vnote.num_eleve >= 1 ET vnote.num_eleve <= maxi ET vnote.num_matiere >= 1 ET vnote.num_matiere <= 4)
moyennes(vnote.num_eleve,vnote.num_matiere)=vnote.moyenne
Fsi
Lire(f_note,vnote)
Ftq
fermer(f_note,f_eleve)
Fin
Fonction calcul_moyennes (val.tableau réel : moyennes(), adr.tableau réel : moy_genes(), val.entier : maxi)
entier : nbnotes, i, j, total
Début
nbnotes = 0
Pour (i = 1 à maxi)
total = 0
Pour (j = 1 à 4)
Si (moyennes(i,j) > -1)
total = total+moyennes(i,j)
nbnotes = nbnotes + 1
Fsi
Fpour
moy_genes(i) = total / nbnotes -1
Fpour
Fin
Fonction recherche_tableau (val.tableau chaîne : noms(), val.tableau chaîne : matieres(), val.tableau réel : moyennes(),
val.tableau réel : moy_genes(), val.entier : maxi)
entier : i, mat
chaîne : eleve
booléen : trouve
Début
Saisir(eleve)
Tant que (eleve <> "")
i = 1
trouve = FAUX
Tant que (trouve = FAUX ET i <= maxi)
Si (noms(i) = eleve)
trouve = VRAI
Sinon
i = i + 1
Fsi
Ftq
Si (trouve = VRAI)
Pour (mat = 1 à 4)
Afficher (matieres(mat), moyennes (i,mat))
Fpour
Afficher ("Moyenne générale", moy_genes(i))
Sinon
Afficher ("nom inexistant")
Fsi
Saisir(eleve)
Ftq
Fin
à toi de transformer cela afin d'obtenir ce que tu souhaites, en fonction de ton enoncé que tu n'ais qu'une seule matière ou plusieurs ...etc... du language et autre.
Et un temps pour chaque chose sous le ciel ... ©A. McCaffrey