Simple calcul avec des variables [Résolu]

Signaler
Messages postés
20
Date d'inscription
vendredi 22 février 2013
Statut
Membre
Dernière intervention
3 août 2013
-
oelihasimanitra
Messages postés
20
Date d'inscription
vendredi 22 février 2013
Statut
Membre
Dernière intervention
3 août 2013
-
Bonjour à tous!
J'aimerai créer quelques lignes de code qui puissent faire un simple calcul d'algèbre d'une chaîne de caractère qui contient un ou plusieurs variables:
exemples : 2x+5+4x-5b devient 6x+5-5b
ou 2x^5+3x^2-2x^5 devient 3x^2

est-ce-que quelqu'un pourra me donner une idée de comment je dois procéder?

Merci!

2 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
35
Bonjour

Si on part du principe qu'il n'y a pas de multiplications/divisions :
il va te falloir plusieurs choses.

- Une méthode qui permette de lire une expression comme -2x^5, et de la décomposer ainsi : -2 et x^5 (si pas de multiplication ou divisions, inutile de décomposer la puissance).
=> avec du string.split(), string.substring()... tu devrais y arriver

- Un dictionnaire de type Dictionary<string, int> (int peut être remplacé par double s'il y a des nombres à virgule).
En gros, dans ton dictionnaire, tu mets comme clé ta variable ("x", "b", "x^2"...), et comme valeur, tu ajoutes le coefficient à la valeur précédente.

Exemple : ta première équation
1) On lit : 2x
2) On regarde s'il existe déjà la clé "x"
3) Il n'en existe pas, on crée la clé "x" avec la valeur 2
4) On lit : +5
5) Pour les constantes, on n'a qu'à imaginer une clé "constante"
6) On regarde s'il existe déjà la clé "constante"
7) Il n'en existe pas, on crée la clé "constante" avec la valeur 5
8) On lit : +4x
9) On regarde s'il existe déjà la clé "x"
10) Elle existe déjà, donc on ajoute la valeur +4 à la clé
11) On lit : -5b
12) On regarde s'il existe déjà la clé "b"
13) Il n'en existe pas, on crée la clé "b" avec la valeur -5
14) Plus de texte. On lit les valeurs du dictionnaire une par une
15) Première valeur : 6, clé "x" => On affiche 6x
16) Deuxième valeur : 5, clé "constante" => On affiche +5
17) Troisième valeur : -5, clé "b" => On affiche -5b
18) Plus de valeur. On a fini.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
20
Date d'inscription
vendredi 22 février 2013
Statut
Membre
Dernière intervention
3 août 2013
1
Bonjour krimog,
Merci beaucoup pour tes conseils, je les ai suivi à la lettre et j'ai réussi; mon code fonctionne très bien.
Mon problème était mon ignorance de l’existence de la classe Dictionary<>, au faite, je ne connaissais pas cette classe jusqu'à ce que tu me le fais savoir.
merci beaucoup, grâce à des gens comme toi, l'informatique évolue à merveille.
merci!