Transformation d'expression arithmétique en arbre

Description

Il s'agit d'un ensemble de fichiers sources .c et .h formant un programme permettant de représenter une expression arithmétique (lue au clavier, se terminant par '.') avant de la transformer en arbre. Cette expression devra cependant être saisie de manière postfixée. Le principe général est que chaque caractère de l'expression est stocké dans une pile qui peut être dépilée au besoin pour créer à la volée un arbre.

L'intérêt de ce programme est que :
-> des procédures et fonctions récursives ont été mises en place
-> les pointeurs en C sont grandement utilisés, ainsi que des énumérations
-> des structures de données comme les piles et les arbres ont été construites
-> des affichages sont faits sur la sortie standard pour montrer l'état de la pile à chaque lecture de caractère etc.

De plus il est possible d'afficher l'expression sous trois notations distinctes (infixée, préfixée et postfixée). Cette même expression peut être évaluée (si aucune variable n'a été saisie) et sa dérivée peut être calculée.

Conclusion :


Relativement faible en ligne de code, ce programme permet d'avoir un cas concret sur la manipulation des piles et des arbres en C.
De plus il donne une idée concernant le traitement des expressions arithmétiques, assez proche de l'analyse syntaxique. Ceux qui ont du mal avec les pointeurs, la récursivité ou les structures de données en C pourront, je l'espère, mieux comprendre le fonctionnement.
Enfin, une grande partie du code peut être repris pour pouvoir traiter des expressions arithmétiques, les dériver et les évaluer, sans avoir à passer par des langages plus spécifiques comme Caml.

Codes Sources

A voir également

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.