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 / Exemple :
// 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...
28 déc. 2004 à 22:13
29 déc. 2004 à 13:39
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
29 déc. 2004 à 14:40
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à :)
29 déc. 2004 à 18:42
29 déc. 2004 à 19:00
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.