TheRogerFederer
Messages postés256Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention10 mars 2016
-
Modifié par cptpingu le 17/09/2015 à 14:41
TheRogerFederer
Messages postés256Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention10 mars 2016
-
17 sept. 2015 à 15:57
Bonjour, j'ai a nouveau besoin de votre aide pour un nouveau codage, voici le nouvelle énoncé :
programme minmax min, max, note : numérique rep : caractère debut min <- 20 max <- 0 rep = "O" tantque rep = "O" afficher "saisir une note" saisir note si note > max alors max <- note finsi si note < min alors min <- note finsi afficher "Voulez-vous continuer ? (O/N) = " saisir rep fintantque afficher "note la plus basse = " + min afficher "note la plus haute = " + max fin
j'ai codé cela :
// -- bibliothèques nécessaires --
#include <stdio.h>
#include <conio.h>
// -- programme principal --
int main () {
// déclarations
double min = 20 ;
double max = 0 ;
double note = 0 ;
char rep = 'O' ;
// saisie de la moyenne
while(rep == 'O') {
printf(" Saisir une note = ") ;
scanf("%lf",¬e) ;
if (note > max) {
max += note ;
}
if (note < min) {
min += note ;
}
printf(" Voulez-vous continuer ? (O/N) = ") ;
scanf("%c",&rep) ;
}
printf(" Afficher note la plus basse = %lf\n ", min) ;
printf(" Afficher note la plus haute = %lf\n ", max) ;
getch() ;
return 0 ;
}
Alors je n'ai aucune erreur dans le débugger mais il ne m'affiche pas ce que je recherche................. :(
Je ne sais pas si c'est une erreur de copier-coller, mais dans ton scanf, tu ne prends pas l'adresse de la variable.
Au lieu de conserver la plus petite des notes, tu sommes toutes les notes qui sont plus petites que la précédente somme. Idem pour le max.
Il n'y a pas de "clear" avant ton scanf, ce qui peut poser souci (essaie avec et sans pour comprendre le problème).
Pas besoin de <conio.h>. C'est une bibliothèque pour Windows, dont tu ne te sers pas. De plus, ceux qui ne sont pas sous Windows ne pourront pas compiler ton code si tu le laisses (c'est mon cas).
Regarde si 'O' et 'o' correspondent, ainsi, si l'utilisateur oublie la majuscule, ça sera tout de même accepté.
Le code corrigé:
#include <stdio.h>
void clear(void)
{
while (getchar() != '\n')
;
}
int main(void)
{
double min = 20;
double max = 0;
double note = 0;
char rep = 'O';
while (rep == 'O' || rep == 'o')
{
printf("Saisir une note = ");
scanf("%lf", ¬e);
if (note > max)
max = note;
if (note < min)
min = note;
printf("Voulez-vous continuer ? (O/n) = ");
clear();
scanf("%c", &rep);
}
printf("Afficher note la plus basse = %f\n", min);
printf("Afficher note la plus haute = %f\n", max);
/* getch(); */
return 0;
}
Remarques de style (facultatives):
En C++, on préfère aligner les accolades.
On met un espace après un mot-clé (comme, while, if, for, etc...).
On met un espace après une virgule.
On ne met pas d'espace avant un point-virgule.
Les opérateurs sont entourés d'espaces (comme =, +, -, >, etc...).
Dans un printf, s'il y a un \n, il est rare d'avoir un espace derrière.
Lorsque l'on pose une "question" avec choix, on met le choix par défaut en majuscule, et les autres choix en minuscule. Exemple: "[Y/n] ?" pour y par défaut et "[y/N/a] ?" pour n par défaut.
PS: Pour les balises de code, quand tu as du pseudo-code, tu peux utiliser les balises de code neutre < code></code>.