Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/09/2012, 19h55   #1
kigeri
Invité de passage
 
Homme
Inscription : septembre 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2012
Messages : 2
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 :
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.
kigeri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2012, 20h50   #2
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 415
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 415
Points : 3 770
Points : 3 770
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2012, 11h22   #3
Alcatîz
Responsable Pascal

 
Avatar de Alcatîz
 
Homme Jean-Luc Gofflot
Ressources humaines
Inscription : mars 2003
Messages : 5 510
Détails du profil
Informations personnelles :
Nom : Homme Jean-Luc Gofflot
Âge : 46
Localisation : Belgique

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

Informations forums :
Inscription : mars 2003
Messages : 5 510
Points : 39 351
Points : 39 351
Envoyer un message via ICQ à Alcatîz Envoyer un message via MSN à Alcatîz Envoyer un message via Yahoo à Alcatîz Envoyer un message via Skype™ à Alcatîz
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]
Alcatîz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2012, 20h51   #4
EtherOS
Membre habitué
 
Avatar de EtherOS
 
Homme Lionel Tidjon
Etudiant Polytechnicien
Inscription : juillet 2012
Messages : 51
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 : 51
Points : 110
Points : 110
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
EtherOS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2012, 00h31   #5
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 415
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 415
Points : 3 770
Points : 3 770
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2012, 22h20   #6
EtherOS
Membre habitué
 
Avatar de EtherOS
 
Homme Lionel Tidjon
Etudiant Polytechnicien
Inscription : juillet 2012
Messages : 51
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 : 51
Points : 110
Points : 110
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 .
EtherOS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2012, 23h33   #7
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 687
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 687
Points : 1 002
Points : 1 002
Veuillez noter que le titre de la discussion est : "Lecture de nombre réels".

__________________
L'Art est long et le Temps est court.
Roland Chastain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h32.


 
 
 
 
Partenaires

Hébergement Web