Exercice impliquant des tableaux

Fermé
adibou92 - 3 nov. 2004 à 19:13
 moooi - 26 mars 2009 à 14:59
bonjours voila g doit faire un programme pour mon cour d'info et g trop du mal....
le sujet est :creer un programme qui saisi des notes d'eleves les ranges ds un tableau et ki calcul la moyenne d'un éléve dont le nombre de note est saisi??
Hors g bocoup de mal avec linfo et encore plus avec les tableaux et g c vraiment pas comment m'y prendre si quelq'un pouvai m'aider merci beaucoup d'avance


adi

2 réponses

Galsungen Messages postés 6928 Date d'inscription vendredi 5 mars 2004 Statut Contributeur Dernière intervention 18 novembre 2007 1 422
4 nov. 2004 à 07:32
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
1
salut galsugen et les autres vivant encore
je ne sais pas si tu existe tjrs ou tu ne plus sur terre mais quand meme je veux essayer de voir voir si tu es tjrs en vie.
j'ai un probleme mon frere de resoudre un probleme d'algo qui doit me constituer la table de muiltiplication d'un nombre de 1 a 10.

A ++
Que tu soit en vie

merci
0
mistère...=)
0