Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1694 connectés 

  FORUM HardWare.fr
  Programmation

  [Pascal] problème de nombres ... ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Pascal] problème de nombres ... ???

n°65607
Pizz
Vive les Tomates !
Posté le 16-10-2001 à 17:54:41  profilanswer
 

Salut, je débute le Pascal à l'école et on a eu un petit programme à faire : Entrer le montant en Euros et mettre combien de billets de 500 euros, 200, 100 ... ça fait.
 
voilà ce que j'ai fait :
 
program euro;
 
uses    crt;
 
var     a,b:longint;
        euros:real;
 
Begin
 
     write ('Quelle est le montant en euros ? ';);
     readln (euros);
     writeln;
 
     a := trunc(euros*100);
 
     writeln;
     writeln (a);
 
     writeln ('Pour faire ',euros:5:2,' euros, il faut :';);
     writeln;
 
     if (a/50000)>=1 then writeln (trunc(a/50000),'x un billet de 500 euros';);
     b := a mod 50000;
     if (b/20000)>=1 then writeln (trunc(b/20000),'x un billet de 200 euros';);
     a:= b mod 20000;
     if (a/10000)>=1 then writeln (trunc(a/10000),'x un billet de 100 euros';);
     b := a mod 10000;
     if (b/5000)>=1 then writeln (trunc(b/5000),'x un billet de 50 euros';);
     a:= b mod 5000;
     if (a/2000)>=1 then writeln (trunc(a/2000),'x un billet de 20 euros';);
     b := a mod 2000;
     if (b/1000)>=1 then writeln (trunc(b/1000),'x un billet de 10 euros';);
     a:= b mod 1000;
     if (a/500)>=1 then writeln (trunc(a/500),'x un billet de 5 euros';);
     b := a mod 500;
     if (b/200)>=1 then writeln (trunc(b/200),'x une piece de 2 euros';);
     a:= b mod 200;
     if (a/100)>=1 then writeln (trunc(a/100),'x une piece de 1 euro';);
     b := a mod 100;
     if (b/50)>=1 then writeln (trunc(b/50),'x une piece de 50 cents';);
     a:= b mod 50;
     if (a/20)>=1 then writeln (trunc(a/20),'x une piece de 20 cents';);
     b := a mod 20;
     if (b/10)>=1 then writeln (trunc(b/10),'x une piece de 10 cents';);
     a:= b mod 10;
     if (a/5)>=1 then writeln (trunc(a/5),'x une piece de 5 cents';);
     b := a mod 5;
     if (b/2)>=1 then writeln (trunc(b/2),'x une piece de 2 cents';);
     a := b mod 2;
     if a=1 then writeln (a,'x une piece de 1 cent';);
 
     readln;
 
End.

 
Quand je mets 100.68, ça marche.
Mais si je mets 789.68, il fait comme si c'était 789.67
 
Je ne comprends pas pourquoi ...  :??:  
 
 
Merci de votre aide.


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
mood
Publicité
Posté le 16-10-2001 à 17:54:41  profilanswer
 

n°65612
bjbebert
Posté le 16-10-2001 à 18:48:55  profilanswer
 

Probleme sur les nombres reels.
 
Le probleme des reels, c'est qu'ils sont pas codes exactement. Par exemple 0.05 pourrait etre 0.04999.
C'est surement ce qui arrive avec 789.68.
 
Essaye en utilisant le type Double (+precis) au lieu de Real.
 
Dans ton cas, regarde s'il existe un type Currency. C'est traite comme un entier 64 bits (donc exact) en considerant les 4 derniers chiffres comme des decimales.

n°65625
Pizz
Vive les Tomates !
Posté le 16-10-2001 à 19:44:52  profilanswer
 

ça va j'ai trouvé !
j'ai cherché dans fonctions standards et j'ai trouvé "arrondir".
 
 
c'est pas : a := trunc(euros*100);
 
mais : a := round(euros*100);
 
 
Merci quand même.  :)


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Pascal] problème de nombres ... ???

 

Sujets relatifs
[Access] problème de runtimeprobleme d' ASP...please help Urgent!!!!!
[MFC] Problème de rafraichissement d'une CView et CWinApp:OnIdle[VB] Mettre des espaces entre les milliers ds les nombres...
Problème accents : conversion BDD DBASE en MYSQL[PHP] Setcookie et header("location:...") Problème???????
[phpBB] Ben oui, j'ai un probléme.......[Delphi] Problème avec winsock (pour un chat)
cherche compilateur pascal sous dos, mais <> de turbopascal[Visual C++ 6] Problème de Chargement
Plus de sujets relatifs à : [Pascal] problème de nombres ... ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR