Bonjour,

Je dois réaliser une fonction qui retourne le meilleur élève par cote et ce pour chaque cote (dont le nombre est choisi par l'utilisateur entre 1 et une constante globale), on lui passe un tableau de type structure avec des noms d'étudiants et des cotes.

en fait il faudrait parcourir la structure via les cotes et non via les étudiants, mais je ne parviens pas à trouver l'algorithme correspondant.

J'ai tenté un code que voici mais qui ne donne pas le résultat escompté et une réflexion en Excel annexéeNom : Cotes.JPG
Affichages : 201
Taille : 38,6 Ko.

En fait il faudrait récupérer les valeurs suivantes dans le tableau de droite afin d'ensuite parcourir ce tableau qui donnera le meilleur étudiant dans chaque cote.

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
struct Etudiant{
    string Nom;
    int cotes[NC_max];
};
 
void Affichage(Etudiant Tab[], int NE, int NC) {
   string EtudiantCoteMax;
   int CotesMax[NC_max];
   int CotesIndice[NC_max];
 
   // CoteMax[0] : NomEtudiant
   // CoteMax[n] : NomEtudiant
 
  // Pierre, Jean, ...
 
 
	string NaneStudentWithMaxCote, NaneStudentWithMinCote;
 
		EtudiantCoteMax=Tab[0].Nom;
		for (int j = 0; j < NC; j++) { CotesMax[j]=0; CotesIndice[j]=0; }; 
 
	for (int i = 0; i < NE; i++) {
		cout << "Nom Etudiant[" << i+1 << "]=" << Tab[i].Nom << endl;
 
		for (int j = 0; j < NC; j++) {
		cout << "Cote :["<< j+1 <<"] - Etudiant[" << i+1 << "]=" << Tab[i].cotes[j] << endl;
 
 
		 int Min =0, Max =0; 
 
		if (Tab[i].cotes[j] <= Min )  { 
			Min = Tab[i].cotes[j];
			NaneStudentWithMinCote=Tab[i].Nom; 
		}
		if (Tab[i].cotes[j] >= Max )  {
			Max = Tab[i].cotes[j]; 
			NaneStudentWithMaxCote=Tab[i].Nom;
 
			if (Max > CotesMax[j]) { EtudiantCoteMax=Tab[i].Nom; CotesIndice[j]=j; };
		}
 
		}
	}
 
 
	    	for (int j = 0; j < NC; j++) {
 
 
		cout << "Nom Etudiant avec la cote Max : " << CotesIndice[j] << " " <<EtudiantCoteMax << endl; 
 
    }
 
}