Parser de fonction mathématiques en C++

Parser de fonction mathématiques en C++ - Programmation

Marsh Posté le 25-02-2001 à 23:04:05    

'lut
 
 
Je recherche kelkun ki aurait déjà programmmé ce genre de truc.
Merci.
 
A+

Reply

Marsh Posté le 25-02-2001 à 23:04:05   

Reply

Marsh Posté le 26-02-2001 à 09:22:21    

C'est pour faire quoi ?


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 26-02-2001 à 10:59:01    

Ben en fait, tu rentre une fonction à la main dans un champ style : f(x)= 3x+cos(x) et le programme la lit et l'évalue. Cela évite de recompiler ton programme ,si la fonction change.
 
Voilà

Reply

Marsh Posté le 26-02-2001 à 12:28:26    

Ben je ne sais pas vraiment quel est ton pb mais j'ai fait ça une fois, et j'ai procédé de la manière suivante :
 
[#]Développer un diagramme de classes représentant les fonctions mathématiques : monome, polynome, frac rat, trigo ....
[#]Convertir la string de la fonction en polonaise inverse.
[#]Stocker la représentation de cette fonction avec cette méthode, mais dans l'autre sens.
 
Exemple : f(x) = (3x + cos(x))/(2x²-x+2)
(mes souvenirs de représentations de polonaises sont flous avec les fonctions prioritaires)
=> 3 x * x cos + x 2 ^ x - 2 + /
 
Représentées par le chaînage des instances :
 
"Opérateur /" -> "Operateur +" -> "Polynome" -> "Monome (coef 3, degré 1)"  
                            |---> "Trigo (cos)" -> "Polynome" -> " Monome (coeff 1 degré 1)"
            |--> "Polynôme" -> "Monome coeff 1 degré 2" -> Monome coeff 1 degré 1" -> "Monome coeff -2 degré 0"


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 26-02-2001 à 12:50:55    

hum hum, ça me semble interressant. Tu n'aurais par hasard un source ou un dossier de programmation sous la main ?
 
Si oui, pourrais-tu me les mailer.
Merci
 
A+

Reply

Marsh Posté le 26-02-2001 à 12:58:12    

Nan j'ai plus les sources. Mais faut bien que tu utilises tes méninges non :D ???
 
Ce qui est méga joussif c'est quand tu codes les fonctions dérive() pour chaque classe. Après tu fais fonction->derive() et zou c'est nikel :D
 
Bon je t'avoue le plus chiant c'est la simplification. Une méthode efficace consiste à factoriser puis développer x fois mais ça ne marche pas à tous les coups.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 26-02-2001 à 13:10:34    

Un tuyau quand même : pour parser la string il te faut au moins une pile où tu mets les opérateurs que tu rencontres.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 26-02-2001 à 13:10:41    

Tu n'aurais pas une connaissance qui aurait gardé les sources, tu me sauverais la vie.
 
ReMerci
A+

Reply

Marsh Posté le 26-02-2001 à 13:18:34    

Ca dépend combien de temps tu peux attendre.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 26-02-2001 à 13:22:04    

une semaine, voire deux :-)

Reply

Marsh Posté le 26-02-2001 à 13:22:04   

Reply

Marsh Posté le 26-02-2001 à 13:25:30    

Je te donne des nouvelles demain.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 26-02-2001 à 13:28:01    

encore merci

Reply

Marsh Posté le 26-02-2001 à 22:34:23    

juste une petite remontée de post, j'attends une reponse (:)

Reply

Marsh Posté le 27-02-2001 à 09:41:52    

PERDU
 
A plus les sources, il va falloir que tu cogites (ça m'a pris une journée je crois). Les étapes du parsage sont
- élimination des espaces
- élimination des parenthèses superflues
- analyse de la chaîne en commençant par les opérateurs les moins prioritaires, puis les opérateurs prioritaires puis enfin les fonctions.
 
Je crois me souvenir que l'on splitait la chaîne en deux et que c'était résursif mais alors là c'est une question d'affinités personnelles.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 27-02-2001 à 10:25:43    

Ouuuuinnn Ouinnnnn :-(((
On était prêt à t'offrir un petit kekchose mais malheureusement ça tombe à l'eau.
 
Tu avais fait ça en TP, tu n'avais pas de binome ou des "camarades" qui auraient encore leurs sources aujourd'hui ?
 
J'ai déjà mal à la tête rien que d'y penser :-(
 
Enfin, merci quand même  
 
A+

Reply

Marsh Posté le 27-02-2001 à 10:31:51    

Nan projet info en école en binôme.
 
On était prêt à t'offrir un petit kekchose mais malheureusement ça tombe à l'eau.
 
Fallait pas le plaisir de t'aider me suffit.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 27-02-2001 à 10:33:04    

tu vas peut-être me trouver chiant, mais tu es toujours en bons termes avec ton binome ? :-)

Reply

Marsh Posté le 27-02-2001 à 10:47:50    

Salut,
 
J'ai peut-etre un parser en c mais il faut que je fouille, je te tiens au courant.

Reply

Marsh Posté le 27-02-2001 à 10:48:27    

A ton avis pourquoi j'ai mis 'perdu' ? Il ne les a plus non plus c'est pour cela que je te demandais d'attendre le lendemain.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 27-02-2001 à 10:50:42    

K1200 --> merci
 
Toxin --> Bon ben tant pis. Merci quand même pour tes recherches.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed