[programmation en c] programme en c

Fermé
delta - 19 déc. 2005 à 13:34
balashov Messages postés 17 Date d'inscription vendredi 13 décembre 2002 Statut Membre Dernière intervention 22 mars 2006 - 19 déc. 2005 à 14:10
salut !
j'ai un petit programme à réaliser en language c malheureusement, j'ai quelques difficultés, je souhaiterais, si possible, un coup de pouce.
voici, l'énoncé :
programmer en c une fonction pour évaluer, en calculs sur les entiers, une expression arithmétique. Celle-ci se présente sous la forma d'une suite d'entiers naturels sur un seul chiffre décimal, d'opérateurs binaires +,-,*,/, et de parenthèses ( et ). la suite sera supposée complétement et correctement parenthésée. cette évaluation se fear de manière récursive puis itérative en utilisant une seule pile contenant opérandes et opérateurs.
Merci, de bien vouloir m'envoyer un début ou la totalité ddu code source de ce programme, en sachant que plus c simple mieux je comprendrais.
a plus

1 réponse

balashov Messages postés 17 Date d'inscription vendredi 13 décembre 2002 Statut Membre Dernière intervention 22 mars 2006 1
19 déc. 2005 à 14:10
Salut à toi, programmeur!

Je te rappelle que ce forum n'est pas là pour faire les exercices des étudiants ;-)
Ne t'attends donc pas à trouver ici une solution toute faite à ton problème, mais seulement quelques aides pour la résolution de ton problème... Je suis étudiant moi aussi, et je me suis déjà fait rembarrer plusieurs fois pour ce genre de messages...

----------------------------------------------------------------

donc pour en revenir à ton exercice:

prototype de la fonction:
int eval_expression( char * expr);
elle reçoit en paramètre l'expression correctement saisie à évaluer et renvoie le résultat obtenu.

Je pense que la fonction pourrait tourner comme ça:
--> tu trouves la taille de l'expr avec la fonction int strlen( char * expr) de string.h
--> tu gères plusieurs tableaux d'entiers qui vont te permettre de repérer dans expr l'emplacement des divers "caractères remarquables":
-------> int * chiffres qui contiendra l'emplacement des chiffres
(pour savoir si un caractère est un chiffre, utilises int atoi( char ou char*) qui renvoie l'entier ou -1 sinon)
-------> int * par_ouvr qui contiendra l'emplacement des parenthèses ouvrantes
-------> int * par_ferm pour les parenthèses fermantes
-------> int * oper pour les opérateurs

Il te faudra ensuite allouer l'espace mémoire pour ces tableaux avec malloc de malloc.h et la taille de expr.

ensuite, suivant la position de tes parenthèses, tu trouves l'ordre des opérations à effectuer; tu réalises ensuite ces opérations dans l'ordre, et tu renvoies le résultat.

N'hésites pas à me contacter par mail si tu as besoin de plus d'informations!

@+
Balashov

0