IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

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


Sujet :

Pascal

  1. #1
    Nouveau Candidat au Club
    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 : 0
    Points
    0
    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é

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    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.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    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
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    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]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Membre actif
    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 : 233
    Points
    233
    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é

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    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.
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre actif
    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 : 233
    Points
    233
    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
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 070
    Points : 15 457
    Points
    15 457
    Billets dans le blog
    9
    Par défaut
    Veuillez noter que le titre de la discussion est : "Lecture de nombre réels".

    Mon site personnel consacré à MSEide+MSEgui : msegui.net

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