Recherche de maximum et de minimum

Résolu
TheRogerFederer Messages postés 256 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 10 mars 2016 - Modifié par cptpingu le 17/09/2015 à 14:41
TheRogerFederer Messages postés 256 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 10 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................. :(
A voir également:

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 17/09/2015 à 14:43
Bonjour.

Plusieurs soucis:
  • 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>.


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Rejoignez-nous