begin process at 2010 03 19 08:19:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > CALCULATRICE ECRITURE POLONAISE

CALCULATRICE ECRITURE POLONAISE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :4 318 / 269

Auteur : CptPingu

Ecrire un message privé
Site perso
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

Les Membres Club peuvent 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.

 Sources du même auteur

Source avec Zip Source avec une capture SKINNER UNE APPLICATION SANS COMPOSANTS
Source avec Zip TUTORIAL LISTES CHAINÉES
Source avec Zip Source avec une capture PUISSANCE 4 AVEC IA (ARBRE DE JEUX)
Source avec Zip Source avec une capture CONVERTISSEUR ECRITURE POLONAISE -> NORMALE
Source avec Zip JEU OTHELLO

 Sources de la même categorie

Source avec Zip Source avec une capture CONVERTISSEUR D'UN NOMBRE DÉCIMAL EN BINAIRE ET HEXADECIMAL par ludokk
Source avec Zip Source avec une capture PREMIER OU PAS? par ludokk
Source avec Zip Source avec une capture CONJECTURE DU CARRÉ DES FACTEURS par Bacterius
Source avec Zip Source avec une capture GÉNÉRATEUR DE NOMBRES PSEUDO-ALÉATOIRES par Bacterius
Source avec Zip Source avec une capture ALGORITHME DE HASH LEA par Bacterius

Commentaires et avis

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).
@+

Commentaire de CptPingu le 21/05/2005 21:14:33

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

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.

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.

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

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

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.

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...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales