oelihasimanitra
Messages postés20Date d'inscriptionvendredi 22 février 2013StatutMembreDernière intervention 3 août 2013
-
18 août 2011 à 12:31
oelihasimanitra
Messages postés20Date d'inscriptionvendredi 22 février 2013StatutMembreDernière intervention 3 août 2013
-
25 août 2011 à 12:51
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?
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 18 août 2011 à 15:19
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é. -
oelihasimanitra
Messages postés20Date d'inscriptionvendredi 22 février 2013StatutMembreDernière intervention 3 août 20131 25 août 2011 à 12:51
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!