Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  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 :
    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 531
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 531
    Points : 4 010
    Points
    4 010

    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

    Avatar de Alcatîz
    Homme Profil pro Jean-Luc Gofflot
    Ressources humaines
    Inscrit en
    mars 2003
    Messages
    5 941
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Luc Gofflot
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : mars 2003
    Messages : 5 941
    Points : 37 434
    Points
    37 434

    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 :
    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 actif
    Avatar de EtherOS
    Homme Profil pro Lionel Tidjon
    Etudiant Polytechnicien
    Inscrit en
    juillet 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Nom : Homme Lionel Tidjon
    Localisation : Cameroun

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

    Informations forums :
    Inscription : juillet 2012
    Messages : 57
    Points : 179
    Points
    179

    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 :
    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 531
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 531
    Points : 4 010
    Points
    4 010

    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 :
    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 actif
    Avatar de EtherOS
    Homme Profil pro Lionel Tidjon
    Etudiant Polytechnicien
    Inscrit en
    juillet 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Nom : Homme Lionel Tidjon
    Localisation : Cameroun

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

    Informations forums :
    Inscription : juillet 2012
    Messages : 57
    Points : 179
    Points
    179

    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
    Avatar de Roland Chastain
    Homme Profil pro Roland Chastain
    Inscrit en
    décembre 2011
    Messages
    1 073
    Détails du profil
    Informations personnelles :
    Nom : Homme Roland Chastain
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : décembre 2011
    Messages : 1 073
    Points : 2 098
    Points
    2 098

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •