Bonjour,
Je dois faire un script qui fait une statistique sur les notes, j'arrive a calculer la meilleur,mauvaise moyenne des etudiants. Par contre, je n'arrive pas a calculer la meilleur ni la mauvaise moyenne d'un groupe.
Notes: on considère que les étudiants d'un même groupe sont
consécutifs.
Les exemples d'entrées sont les suivantes (nom,groupe,note(s)):
ghislain A1 14.3 12.7 11.4 13
imane A1 10.3 14 11.1 12
katarina A1 14 19.4 0 17
ngoc-vu A1 13 11.2 16 13.6
amin A2 16.2 14.7 10.1 15.8
matthias A2 13.4 12.2 18 16
serpil A2 18 14.3 17.6 17
thibault A2 17 15.7 18.3 16.4
yoann A2 16 16.4 13.2 15.1
Voici le script que j'ai fait:
#include
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::ios_base;
using std::string;
using std::setw;
int main(void)
{
string name;
string gr;
string nuletu;
string bonetu;
double mingrade = 10000;
double maxgrade = -10000;
int countgbetu = 0;
double moygbetu = 0;
double sumnote = 0;
while (cin >> name >> gr ){
double note;
int count = 0;
double sum = 0;
while (cin >> note){
++count;
++countgbetu;
sum += note;
sumnote += note;
}
if (count > 0){
double moy = 0;
moy = sum / count;
if ( moy < mingrade ){
mingrade = moy;
nuletu = name;
}
if ( moy > maxgrade ){
maxgrade = moy;
bonetu = name;
}
moygbetu = sumnote;
}
cin.clear();
}
moygbetu /= countgbetu;
cout.setf (ios_base::fixed);
cout.precision(2);
cout << setw(20) << std::left << "Best student:" << " " << setw(20) << std::left << bonetu << " " << setw(7) << std::right << maxgrade << endl;
cout << setw(20) << std::left << "Worts student:" << " " << setw(20) << std::left << nuletu << " " << setw(7) << std::right << mingrade << endl;
cout << "Student global average" << ":" << " " << moygbetu << endl;
return 0;
}
Tout est ok pour les calculs sur les etudiants.
La meilleur moyenne du groupe devrait etre A2 avec 15.57
La mauvaise moyenne du groupe devrait etre A1 avec 12.69
Merci beaucoup,