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 946
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 946
    Points : 5 659
    Points
    5 659
    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.

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 945
    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 945
    Points : 59 442
    Points
    59 442
    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.


  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 946
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 946
    Points : 5 659
    Points
    5 659
    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.

  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 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

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


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