Opérations dans une chaine de caractères [Résolu]

Signaler
Messages postés
9
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
27 mai 2007
-
Messages postés
9
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
27 mai 2007
-
Bonjour à tous.
Voila j'aimerais faire un programme qui fasse l'évaluation d'une expression qui tient dans un char * et qui retourne le resultat.
un exemple : "27877775+89"   ou  "24894180*12484859".
Si quelqu'un à une idée elle serait la bienvenue .
Merci d'avance.
Nunca hemos dejado de aprender.

4 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Le pointeur q ne sert à rien ici je crois:

char c[] = "123+456", *p = strchr(c, '+');
int res;

*p++ = 0;

res = atoi(c)+atoi(p);

Je ne peux pas tester mais je crois que c'est bon.

C++ (@++)<!--
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Cas d'une addition:

char * operation = "123 + 566";

char * p = strchr (operation, '+');
char * q = (char *)strdup (p + 1);

*p = '\0';

int a = atoi (operation);
int b = atoi (q);

int res = a + b;

Dans des cas plus complexes avec des parenthèses, des régles d'associativités en jeu une pile fera l'affaire.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Il faut faire le ménage aussi:

free (q);


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
Messages postés
9
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
27 mai 2007

Merci beaucoup
Je crois que je vais m'en sortir à présent grâce à votre aide à tous.
A bientôt.