CALCULATRICE ECRITURE POLONAISE

cs_Gimli Messages postés 21 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 5 janvier 2008 - 21 mai 2005 à 20:59
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 - 6 juin 2005 à 14:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31532-calculatrice-ecriture-polonaise

jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
6 juin 2005 à 14:25
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 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
22 mai 2005 à 22:31
Remarques, réponses et justifications en message privé.
Utilisateur anonyme
21 mai 2005 à 23:35
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 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
21 mai 2005 à 21:27
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.
Utilisateur anonyme
21 mai 2005 à 21:14
Oui exact, j'ai pas fait attention. C'est corrigé merci.
cs_Gimli Messages postés 21 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 5 janvier 2008
21 mai 2005 à 20:59
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).
@+
Rejoignez-nous