Opérations dans une chaine de caractères

Résolu
cs_bagaz
Messages postés
9
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
27 mai 2007
- 8 avril 2007 à 00:17
cs_bagaz
Messages postés
9
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
27 mai 2007
- 9 avril 2007 à 02:30
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

SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
8 avril 2007 à 04:21
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++ (@++)<!--
3
Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
38
8 avril 2007 à 01:10
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"
0
Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
38
8 avril 2007 à 01:11
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"
0
cs_bagaz
Messages postés
9
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
27 mai 2007

9 avril 2007 à 02:30
Merci beaucoup
Je crois que je vais m'en sortir à présent grâce à votre aide à tous.
A bientôt.
0