Recherche de maximum et de minimum [Résolu]

TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - 17 sept. 2015 à 11:02 - Dernière réponse : TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention
- 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................. :(
Afficher la suite 

2 réponses

Répondre au sujet
cptpingu 3771 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 7 janvier 2018 Dernière intervention - Modifié par cptpingu le 17/09/2015 à 14:43
0
Utile
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
Commenter la réponse de cptpingu
TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - 17 sept. 2015 à 15:57
0
Utile
Merci beaucoup ca marche super, désolé je fais beaucoup d'erreur comme je débute mais merci de prendre du temps pour m'aider
Commenter la réponse de TheRogerFederer

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.