begin process at 2012 02 08 10:12:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CONVERTISSEUR RPN ALGEBRIQUE

CONVERTISSEUR RPN ALGEBRIQUE


 Information sur la source

Note :
5,67 / 10 - par 3 personnes
5,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :28/12/2004 Date de mise à jour :19/05/2005 14:09:06 Vu / téléchargé :4 880 / 298

Auteur : Saros

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
C'est mon premier vrai projet en C++ alors soyez indulgent ^^
C'est un convertisseur d'écriture mathématique : Ecriture algébrique vers notation polonaise inversée et vice versa.
J'invite ceux qui ne savent pas ce qu'est la notation polonaire inversée à chercher sur Google, je suis un bien piètre pédagogue sur ce niveau-là...
Donc voilà, c'est tout :)

POUR CEUX QUI ONT LA FLEMME DE TELECHARGER LE ZIP ET QUI ONT PLUTOT SOIF DE .EXE, C'EST PAR LA :
http://www.chez.com/topila/rpnconvert.exe

Source

  • // Perso j'aime pas trop quand il y a beaucoup de lignes de codes sur une page, donc voyez le zip :)
// Perso j'aime pas trop quand il y a beaucoup de lignes de codes sur une page, donc voyez le zip :)

 Conclusion

Il fonctionne en mode console. Le code est commenté.
Je me suis inspiré, pour le fonctionnement, de ma calculatrice (TI 92+, AMS 2.08 ou 9 je sais plus).
Je n'ai pas mis de protection contre les erreurs de syntaxe et le bêtises dans le genre et je vous préviens que le maniement des pointeurs dans le programme est loin d'être parafait... Faites attention à ce que vous ecrivez, quoi :)
Sinon, la transcription est entièrement fonctionnelle, elle gère les opération binaires '+', '-', '/', '*' et '^' ainsi que les fonctions étendues (ie de la forme "[nom]([arguments])"), et vous pouvez en rajouter autant que vous voulez (voyez le code, j'ai écrit une note pour).
Pour la conversion RPN vers écriture algébrique, écrivez toutes les fonction étendues avec f_ devant (ex f_cos, f_sum, etc).
La chaîne obtenue n'est pas simplifiée, vous pourrez par exemple avoir cos((1+2)) au lieu de cos(1+2).
Pour la conversion écriture algébrique vers RPN, faites l'impasse sur tout ce qui est implicite dans l'écriture, sauf le ^1 et le /1.
Par exemple, écrivez 4*x et non 4x, (a+b)*(c+d) et non (a+b)(c+d).
Encore une chose : j'ai fait ce programme un peu à la rache et il se peut que des petites (grosses ?) erreurs se soient glissées...
Merci de laisser un commentaire !

Et puis j'ai mis débutant parce que c'est une de mes premières sources, mais je ne sais pas trop ce que ça vaut...

 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

29 décembre 2004 10:31:39 :
J'avais fait une erreur en écrivant le lien vers le .exe...
19 mai 2005 14:09:06 :
J'ai rajouté la version DevC++ du projet, qui semblait avoir des problèmes

 Sources du même auteur

Source avec Zip CRYPTAGE PAR INVERSION DE BITS
Source avec Zip Source avec une capture DIRECTX 9 : TEAPOT EN ROTATION AVEC LUMIERE

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de Saros le 28/12/2004 22:13:55

Un grand merci à BruNews ainsi qu'à julienbj

Commentaire de AmK le 29/12/2004 13:39:56

ta notation polonaise c'est la version postfix d'une expression infix c'est ça ?
sinon tu trouves ça beau de mettre tout ce beau code dans du .h ?
peut être que ça serait meilleur de découper ton code en plusieurs .cpp et .h tu trouves pas ? dans le .h tu mets uniquement les déclarations de struct , variables , fonctions

Commentaire de Saros le 29/12/2004 14:40:08

Pour l'écriture postfixée et infixée, c'est çà (respectivement Reversed Polish Notation et écriture algébrique)
Pour l'organisation du projet, j'avais toujours l'habitude de donner à chaque .h une fonction (= un rôle) donnée dans le projet... Là c'est pour la conversion RPN-Alg et inversement, et je comptait me lancer dans un autre, qui lui s'occuperait de la manipulation d'une pile RPN, et un troisième qui s'occuperait de l'affichage d'une expression algébrique en 2D (ceux qui ont des TI connaissent le PrettyPrint).
En fait le truc c'est que je vais bien encapsuler les trois "modules" (appellons-les comme ça), sans pour autant en faire des classes car il n'y en aura qu'une seule instance.
J'avais essayé d'écrire tout dans des .cpp avec des .h adaptés, je n'y suis pas arrivé car les fonctions d'un fichier .cpp donné dans le projet n'étaient pas accessibles pour les autres .cpp... Je ne sais pas encore très bien comment on fait pour les rendre publiques : il faut écrire leurs prototypes dans le .h que l'on inclue dans les autres .cpp ?
Ca me semble assez flou...
Sinon voilà :)

Commentaire de JCDjcd le 29/12/2004 18:42:47

J'aime bien l'idee de la source (et la source en elle-meme bien-sur), c'est un idee originale.

Commentaire de AmK le 29/12/2004 19:00:56

sauf erreur en déclarant les variables comme étant extern tu pourrais les rendre accessibles par tous les cpp du projet ...

Commentaire de Saros le 29/12/2004 23:24:55

extern ?
Je vais me renseigner, merci

Commentaire de AmK le 30/12/2004 12:21:03

http://www.gametutorials.com
ils en parlent dans un de leurs cours

Commentaire de Saros le 30/12/2004 18:41:48

Il n'y avait pas d'outil de recherche dans GameTutorial donc j'ai laissé tomber ^^ mais je l'ai trouvé sur google, en fait il faut déclarer la fonction normalement dans le fichier où elle est implémentée, puis reproduire la déclaration dans les autres fichiers, en mettant extern.

Commentaire de AmK le 31/12/2004 17:51:52

voilà !
pour gametutorials j'aurai du te donner le lien exact mais bon j'étais pressé ^^
extern peut aussi servir à autre chose mais je suppose que tu l'as lu dans la doc que t'as trouvé ?

Commentaire de Saros le 31/12/2004 18:15:18

Ben pas tellement, là j'entame un livre sur le c++ de 800 pages, ils doivent en parler à un moment mais j'ai pas trop envie de sauter des chapitres :)
De toute façon, récemment, quelqu'un (oim_09) a mis en ligne une source qui parlait de l'algorithme de Huffman, il y avait 3 .cpp et 2 .h, et la manière dont il organisait tout ça était parfaitement claire, donc je me suis inspiré de lui :)
Avis à oim_69, si il passe par là ^^

Au fait, vous remarquerez que le convertisseur Alg>RPN ne reconnait pas les nombres négatifs... Pour palier à cela, ajoutez un zéro, comme dans "0-5" pour "-5" ou "x^(0-1)" pour "x^(-1)"
Je suis en train de programmer l'évaluateur d'expression en valeur approché. J'implémenterai plus tard l'utilisation des fractions.

Commentaire de Joky le 20/06/2005 12:58:57

Euh x^(-1) ce n'est pas un négatif mais bon lol

Commentaire de Saros le 20/06/2005 18:03:04

Non, mais -1 si :)

Commentaire de Joky le 20/06/2005 18:10:35

Bé -1 jusqu'au derniere nouvelle du journal Mathématiques "Les amis de Descartes" est toujours considéré comme négatif lol
Mais x^(-1) c'est négatif que si x est négatif fin bref on s'en fou lol il date quand même ce topic :)

Commentaire de Saros le 20/06/2005 22:00:20

T'y es pas :)
Mon programme ne reconnait pas les nombres négatifs, donc pour taper x^(-1), il faut mettre x^(0-1) pour que ça marche, c'est le -1 qui pose problème, pas le x^-1

Commentaire de Joky le 20/06/2005 22:08:07

Ah ca y'est j'ai compris lol :D
J'ai pas trop regarder en faite :)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,404 sec (3)

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