Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCULATRICE ECRITURE POLONAISE


Information sur la source

Catégorie :Maths Niveau : Initié Date de création : 21/05/2005 Date de mise à jour : 06/06/2005 22:43:43 Vu / téléchargé: 3 848 / 256

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Un calculatrice en mode console, qui permet de saisir un une ligne entiere de calcul en écriture polonaise, et qui donne le résultat.
Ma source est loin d'être parfaite (et je suis sur qu'il y a une erreur qui traine), vos commentaires sont donc les bienvenus.

Programme plus performant ici:
http://www.delphifr.com/code.aspx?ID=31855

En plus, cette source ne marche pas dans tout les cas.
(Tester un - + 5 + + 2 1 - 4 8 5)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

21 mai 2005 21:13:41 :
Correction d'un petit truc (merci à Gimli pour la remarque)
22 mai 2005 23:07:50 :
Correction par DelphiProg. (Un grand merci à lui).
06 juin 2005 22:43:43 :
Je trouve cette source peu efficace, essayer l'autre.

Commentaires et avis

signaler à un administrateur
Commentaire de Gimli le 21/05/2005 20:59:49

salut,
j'ai remarqué 1 probleme dans ton code (qui marche sinon, bravo):
dans la fonction Verifier, lorsque tu verifie si le premier élément est bien 1 opérateur, il faut mettre des and et non des or, sinon ca ne marche pas (car le premier élément est forcement différent d'1 des 4 opérateur).
@+

signaler à un administrateur
Commentaire de CptPingu le 21/05/2005 21:14:33

Oui exact, j'ai pas fait attention. C'est corrigé merci.

signaler à un administrateur
Commentaire de Delphiprog le 21/05/2005 21:27:25 administrateur CS

Quelques points à revoir :
function Ajouter(Tab:pTab;Element:string):pTab;
begin
  If Tab=nil then  // Si le tableau n'existait pas on le crée
  begin
  new(Tab);

==> Une fonction appelée ne devrait jamais allouer de mémoire à un pointeur dans le tas.
Ne serait-ce pas plutôt le rôle de la fonction Verifier qui semble commencer dans cette direction (  If Tab<>nil then
begin) mais qui s'arrête aussi vite ?

Dans la fonction :
function Calcul(a,b,Operateur:string):string;
tu écris ensuite :
c:=StrToFloat(a);
d:=StrToFloat(b);
  If Operateur='+' then Res:=c+d;
  If Operateur='-' then Res:=c-d;
  If Operateur='/' then Res:=c/d;
Et si b vaut zéro ? :-(

Suggestion un peu différente de celle de Gimli : au lieu d'une suite de If, il serait bien plus clair d'écrire :
if not (Tab^[I] in ['+','-','*','/']) then

Sinon, bon boulot.

signaler à un administrateur
Commentaire de CptPingu le 21/05/2005 23:35:49

Je te remercie d'avoir jeter un coup d'oeil à ce code.
Toutefois il y a deux remarques que je n'ai pas compris.

1_"==> Une fonction appelée ne devrait jamais allouer de mémoire à un pointeur dans le tas.
Ne serait-ce pas plutôt le rôle de la fonction Verifier qui semble commencer dans cette direction"

Qu'aurais-ju dû marquer ?

2_"Suggestion un peu différente de celle de Gimli : au lieu d'une suite de If, il serait bien plus clair d'écrire :
if not (Tab^[I] in ['+','-','*','/']) then"

J'ai essayé mais ca ne marche pas. Le compilateur me met une erreur "Type incompatible Char et String"
Le code suivant n'a pas marché non plus "if not (Char(Tab^[I]) in ['+','-','*','/']) then", le compilateur me marque "transtypage incorrect".

Enfin, dans ta deuxieme remarque tu as parfaitement raison, je n'ai pas fait attention.

signaler à un administrateur
Commentaire de Delphiprog le 22/05/2005 22:31:51 administrateur CS

Remarques, réponses et justifications en message privé.

signaler à un administrateur
Commentaire de jmp77 le 06/06/2005 14:25:17

Hello,

C'est une très bonne source, en plus en mode console félicitation.
Elle est bien commentée et claire.

Juste une petite remarque à cette ligne dans la procedure Calcul :
'/': if c = 0 then Res := 0 else Res := d / c;  //A vérifier !
Si c'est est égale à 0 tu dois dire qu'une division par 0 est impossible et non pas qu'elle est égale à 0.

Allez pour moi tu mérites un bon 9/10.

Bonne continuation,
JMP77.

signaler à un administrateur
Commentaire de CptPingu le 06/06/2005 14:38:26

Merci JMP. Si cette source t'as plus tu en trouvera une plus évolué ici:
http://www.delphifr.com/code.aspx?ID=31855

Et oui tu as raison, mais je ne sais pas vraiment comment traiter cet erreur. Alors je m'embête pas et je met ce resultat (ca evite de faire planter le programme quand même). J'essaierai de revoir ca avec un "try except" dès que j'aurai un peu plus de temps.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.