Calcul en c++

Fermé
chaa13 - 12 mai 2012 à 20:53
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 12 mai 2012 à 22:40
Bonjour,
Quand je ve faire un petit programme de développement (par exemple ) en c++ je donne a l'ordinateur un model : par exemple de déclare les variables a ,b ,c ,d et je dis :
(a+b)*(c+d) et je demande a l'utilisateur de remplacer les lettre par des nombre et après l'ordinateur calcul en suivant ce model (a+b)*(d+c) .Je voudrais savoir comment faire pour que l'utilisateur rentre n'importe quel calcul sans que le programme lui ait imposer de model : par exemple 2*3+1-6 .

Merci d'avance !!!



A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 mai 2012 à 20:58
Il faudrait parser la chaîne de caractère, faire une interprétation des symboles, pour les remplacer par les bonnes valeurs... ça demande pas mal de boulot.

En Java, je triche, et j'appelle un moteur JavaScript qui va directement interpréter mon calcul, mais je ne sais pas comment adapter cette astuce en C++
1
Il n'y a pas de variable qui prend plusieurs chiffres ?


Merci d'avance !!
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > chaa13
12 mai 2012 à 21:25
Le problème ce n'est pas les valeurs, mais les opérateurs. De base + - * / ( ) ce ne sont que des caractères, et il faudrait leur donner une valeur sémantique pour qu'ils utilisent les opérandes auxquelles ils s'appliquent et calculer le résultat.
Pour ce genre de problème on peut créer un arbre avec les opérateurs sur les noeuds et les opérandes sur les feuilles, et avec à un parcours en ordre préfixe cela revient à un calcul à la polonaise.
0
Warff c'est compliqué tout ça :)
0
On ne peux pas donner de valeur a +-*/ ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > chaa13
12 mai 2012 à 21:46
Et ça t'avancerait à quoi ?
Si + vaut 5 par exemple, l'utilisateur entres "1+2" et tu lui répondras 152 !!! Je ne vois pas l'intérêt...
0
Nxl Messages postés 1038 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 5 janvier 2017 133
12 mai 2012 à 22:20
Après je crois qu'il existe des bibliothèques qui contiennent des fonctions de parsages qui pourraient te servirent.
Tu as fait quelques recherches Google ?
0
Nxl Messages postés 1038 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 5 janvier 2017 133
Modifié par antoine7104 le 12/05/2012 à 22:23
J'ai aussi trouver un topic qui pourrait t'aider.
0
Nxl Messages postés 1038 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 5 janvier 2017 133
12 mai 2012 à 22:23
Et un autre...
0
Merci ! je vais regarder ces forum !
0