Probleme amélioration programme - C++ - Programmation
Marsh Posté le 10-04-2015 à 09:42:30
A l'intérieur du for, faut faire un do{...} while ((note < 0) && (note > 20)), le do...while étant la partie "saisie de la note". En effet, là, si tu te trompes dans la note, tu sera éventuellement amené à la ressaisir si i <= nombreNote. Mais du coup, si tu te trompes une seule fois, t'auras jamais 20 notes mais nombreNote-nberreursSaisie
Au passage, j'avais pas vu que tu testes la valeur de note avant de l'avoir saisie
Et la déclaration de i : tu fais i(1) idem pour somme(0).
Je t'invite vivement à initialiser tes variables avec une valeur au moment de leur déclaration, ça t'éviteras des comportements indéfinis.
Je note aussi que tu vérifies pas que nombreNote est > 0. Idem pour nomEleve. Et si on saisit un caractère au lieu d'un nb, il se passe quoi ?
Marsh Posté le 10-04-2015 à 14:25:23
(et dans ton if, au lieu d'un && ce serait plutôt un || il me semble )
Marsh Posté le 10-04-2015 à 16:00:26
Mais enfaite le int nombreNote, i(1); et déclarer tout en haut, j'enleve ducoup le (1) car il est déclarer dans la boucle : for (i=1; i<=nombreNote; i++) ??
Marsh Posté le 10-04-2015 à 16:25:54
Oui, faut enlever (1) pour i et (0) pour somme. Pour info, dans le for, tu utilises i mais en aucun cas il s'agit d'une déclaration !
+1 pour le || à la place du && dans le if (ou alors, faut faire le teste à l'envers avec les < et > pour garder le && ).
D'une manière générale, il ne s'agit pas d'améliorer ton programme : il ne fonctionne pas et ne compile même probablement pas. Améliorer, c'est reprendre un programme qui fonctionne, soit pour optimiser ses perfs soit pour optimiser le nb de lignes de code ou la lisibilité du programme.
Marsh Posté le 10-04-2015 à 16:37:38
Euh quand tu me parler du do, while a l'interieur du for c'est comme sa que je m'y prend :
for (i=1; i<=nombreNote; i++)
{
do
{
cout << "\n\----------------------" << endl;
cout << " ENTRER LA NOTE N : " << i << endl;
cout << "----------------------" << endl;
cin >> note;
somme += note;
}while((note < 0) || (note > 20));
moyenne = somme / nombreNote;
}
cout << "\n\-=-=-=-=-=-=-=-=-=-=-=-=-" << endl;
cout << " - ELEVE : " << nomEleve << endl;
cout << " - MOYENNE : " << moyenne << endl;
cout << "-=-=-=-=-=-=-=-=-=-=-=-=-" << endl;
La condition de la note marche mais par contre la moyenne ne saffiche pas a la fin ^^
Marsh Posté le 10-04-2015 à 16:50:47
cin >> note;
somme += note;
doivent être en dehors du do...while, of course !
Et moyenne = somme / nombreNote; doit être en-dehors du for. Tu comprends ce que tu fais ? J'ai l'impression que l'algo est pas clair dans ta tête.
Un conseil : avant de coder en C, tu écris ce que tu dois programmer en pseudo-code. Une fois que ça a l'air bon, tu codes en C
Marsh Posté le 11-04-2015 à 15:27:54
Et plus tard, tu pourras t'amuser à utiliser les choses déjà incluses dans la librairie standard du C++11 comme par exemple ceci:
Code :
|
Deux petits trucs à retenir de mon exemple un poil extrémiste
- Il faut essayer d'utiliser les conteneurs de base du C++ chaque fois que c'est possible, en particulier les vector, pour stocker un nombre variables de données numériques. Vector est le premier conteneur de base que tu dois apprendre à utiliser (et c'est facile)
- Quand on a des choses précises et bien identifiées, il faut les mettre dans des fonctions plutôt que dans le main. Typiquement, le calcul de la moyenne d'une liste de nombre rentre dans ce cas.
A+,
Marsh Posté le 10-04-2015 à 09:29:42
Bonjour j'ai un systeme de moyenne de note en C++ mais je n'arrive pas a faire une condition pour dire que si la note est plus petite que 0 et plus grande que 20 alors sa lui demande de réécrire la note (Je pense que j'ai mal placé le if mais je suis pas sur )
Voici mon code :
J'ai commencé le C++ depuis quelque jour c'est pour sa ^^
Message édité par gilou le 10-04-2015 à 16:13:59