p
u
b
l
i
c
i
t
é
publicité
  1. #1

    Homme Profil pro
    Inscrit en
    septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : septembre 2012
    Messages : 3
    Points : -3
    Points
    -3

    Par défaut Lecture de nombres réels et recherche des deux plus grands

    Bonjour,

    J'ai un exercice à résoudre ; au lieu de voir le deuxième maximum, c'est le minimum qui s'affiche !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    program xyz;
    const fin=0;
    var x,max1,max2:real;
    begin
    read(x);
    max1:=x;
    max2:=x;
    while(x<>fin) do
      begin
      read(x);
      if x>max1 then max1:=x else
      if (x>max2) and (max2<max1) then max2:=x;
      end;
      readln;
      write('max1=',max1);
      write('max2=',max2); 
      end.

  2. #2
    Expert Confirmé Sénior

    Inscrit en
    août 2006
    Messages
    3 622
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 622
    Points : 4 762
    Points
    4 762

    Par défaut

    Mie,

    Personne ici ne fera ton travail.

    Montre-nous ce que tu as déjà fait, explique-nous ce qui te bloque, et on verra.
    Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.

  3. #3
    Responsable Pascal, Delphi et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    mars 2003
    Messages
    6 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : mars 2003
    Messages : 6 503
    Points : 43 114
    Points
    43 114
    Billets dans le blog
    2

    Par défaut

    Bonjour,

    Sans vouloir te froisser, il y a plusieurs problèmes dans ton programme.

    Tout d'abord, le fait de commencer à affecter à max1 et à max2 le tout premier nombre lu : si, par la suite, moins de deux nombres lus sont supérieurs à ce premier nombre, le résultat de ton programme sera faux.
    Il vaudrait mieux commencer par affecter à max1 et max2 des valeurs nulles :
    Ensuite, l'endroit où tu lis les nombres dans ta boucle n'est pas bon : en sortie de boucle, tu auras toujours le nombre 0 qui aura été pris en compte, alors qu'il ne doit pas être traité.
    Ta boucle devrait donc être agencée différemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      read(x)
      while(x<>fin) do
        begin
          (* --- *)
          read(x);
        end;
    Enfin, tes tests ne sont pas parfaits ; tu peux t'en rendre compte en exécutant ton programme sur papier. Une piste pour les améliorer : si le nombre lu est supérieur à max1, max2 doit recevoir la valeur de max1 et max1 doit recevoir ce nombre.

    Règles du forum
    Tutoriels, exercices, FAQ, sources, compilateurs, outils, livres Pascal
    Mes tutoriels et sources Pascal
    FAQ Assembleur

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]

  4. #4
    Membre confirmé
    Avatar de EtherOS
    Homme Profil pro
    Etudiant Polytechnicien
    Inscrit en
    juillet 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant Polytechnicien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2012
    Messages : 58
    Points : 210
    Points
    210

    Par défaut Help

    Il y a beaucoup d'erreurs dans votre code. Est-ce que l'utilisateur doit entrer trois entiers ou plusieurs entier au choix ?
    // si c'est trois entiers ou plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Tu peux te servir de ces fonctions
    Function min (num_1, num_2 : Longint) :Longint;
    Begin
             If (num_1 <= num_2) Then min:= num_1 Else min:= num_2; 
    End;
    Function max (num_1, num_2 : Integer) :Integer;
    Begin
             If (num_1 <= num_2) Then max:= num_2 Else min:= num_1; 
    End;
    // ou alors passer pas les tableaux

  5. #5
    Expert Confirmé Sénior

    Inscrit en
    août 2006
    Messages
    3 622
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 622
    Points : 4 762
    Points
    4 762

    Par défaut

    Hoa,
    Citation Envoyé par EtherOS Voir le message
    Il y a beaucoup d'erreurs dans votre code. Est-ce que l'utilisateur doit entrer trois entiers ou plusieurs entier au choix ?
    // si c'est trois entiers ou plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Tu peux te servir de ces fonctions
    Function min (num_1, num_2 : Longint) :Longint;
    Begin
             If (num_1 <= num_2) Then min:= num_1 Else min:= num_2; 
    End;
    Function max (num_1, num_2 : Integer) :Integer;
    Begin
             If (num_1 <= num_2) Then max:= num_2 Else min:= num_1; 
    End;
    // ou alors passer pas les tableaux
    Attention de rester cohérent : soit les variables sont des Longint, soit des Integer, ne pas changer de type selon la fonction appelée.
    Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.

  6. #6
    Membre confirmé
    Avatar de EtherOS
    Homme Profil pro
    Etudiant Polytechnicien
    Inscrit en
    juillet 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant Polytechnicien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2012
    Messages : 58
    Points : 210
    Points
    210

    Par défaut explication

    je n'ai pas mis les Type Longint et Integer par erreur , je l'ai mis pour expliquer que ses entiers peuvent etre long ou court.A cet effet, j'ai pri un premier cas avec des Longints et le second avec des Integers .

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : décembre 2011
    Messages : 1 986
    Points : 5 693
    Points
    5 693
    Billets dans le blog
    1

    Par défaut

    Veuillez noter que le titre de la discussion est : "Lecture de nombre réels".

    L'Art est long et le Temps est court.

Discussions similaires

  1. Recherche des k plus proches voisins d'un point
    Par sara_thèse dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 14/04/2014, 14h35
  2. problème liste affichage des deux plus grands nombres
    Par LeGenTleManfr dans le forum Général Python
    Réponses: 8
    Dernier message: 05/11/2012, 20h13
  3. recherche des deux points les plus éloignés
    Par moooona dans le forum API graphiques
    Réponses: 19
    Dernier message: 01/02/2011, 19h35
  4. Recherche des k plus proches voisins d'un point
    Par mobi_bil dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 13/05/2009, 14h39
  5. [TP] Recherche du 2e plus grand élément d'un tableau...
    Par Dunk dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 02/03/2006, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo