Calculatrice ecriture polonaise

Soyez le premier à donner votre avis sur cette source.

Vue 7 188 fois - Téléchargée 378 fois

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)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jmp77
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
4
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.
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
26
Remarques, réponses et justifications en message privé.
CptPingu
Messages postés
3805
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 mars 2020
98
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.
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
26
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.
CptPingu
Messages postés
3805
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 mars 2020
98
Oui exact, j'ai pas fait attention. C'est corrigé merci.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.