Calcul expression mathématique

cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007 - 14 oct. 2007 à 11:45
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007 - 18 oct. 2007 à 20:19
bonjour a tous,
je fais une application dans lequel :

1/l'utilisateur entre une expression mathématique du type ax²+bx+c ( ex:-2x²+5x-1)

2/je reconnais grace au regex si l'expression est correcte

3/je remplace x par une valeur (par 5 dans l'exemple)

4/ je me retrouve avec : -2*(5)²+5*(5)-1

c'est ici que je bloque, je ne sais pas comment calculer cette expression avec c#!
si quelqun peut m'aider, merci d'avance.

15 réponses

bidou_01 Messages postés 134 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 1
14 oct. 2007 à 14:03
Bonjour,

As-tu regardé du côté du namespace System.Math ?
Sinon tu as un exemple ici.

Cordialement,

Bidou_01
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 oct. 2007 à 14:18
Salut,

Petite correction : System.Math n'est pas un espace de noms, mais une classe :-)

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
14 oct. 2007 à 14:30
enfet je veux juste que csharp calcule tout seul -2*(5)²+5*(5)-1 mais je n'y arrive pas , le lien posté ne m'a pas avancé mais merci de la réponse.
je ne trouve pas dans Mathune fonction qui calcule tout d'un coup.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 oct. 2007 à 14:49
Il n'y a pas d'évaluateur d'expression intégré à la BCL .NET, du moins pas à ma connaissance.
Tu vas sans doute devoir passer par une librairie tierce.

/*
coq
MVP Visual C#
CoqBlog
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bidou_01 Messages postés 134 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 1
14 oct. 2007 à 16:49
Bonjour,

Merci pour la correction coq !
Sinon saravana pourquoi ne programme tu pas le calcul des racines toi même à l'aide des opérateurs élémentaires que fournie la classe Math .

Tu récupères les variables a, b et c de ton polynôme puis tu calcul le discriminent (deltat = b² - 4ac) puis tes racines réelles :
x1 (-b + sqrt(deltat))/2a et x2 (-b - sqrt(deltat))/2a

C'est tout à fait jouable je pense :)

Cordialement,

Bidou_01
0
bidou_01 Messages postés 134 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 1
14 oct. 2007 à 16:49
Excuse moi j'ai répondu complètement HS ^^
0
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 oct. 2007 à 18:18
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
14 oct. 2007 à 18:35
merci a tous davoir répondu, je ne connaissait pas sqrt( ) le probleme est résolu merci.
bye
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
14 oct. 2007 à 18:38
désolé je suis allé trop vite , x1et x2 me permettent ils de faire une liste de points pour tracer un graph?
merci
0
bidou_01 Messages postés 134 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 1
15 oct. 2007 à 22:37
Bonsoir,

Bah, tu peux me faire sans x1 et x2 non ? Il te suffit de faire une liste de points pour tracer le graphes.

Tu remplaces x par plusieurs valeurs dans ton polynôme et tu traces y = f(x) non ?

Après x1 et x2 te permette d'appréhender les variations de la fonction (croissance / décroissance)

Cordialement,

Bidou_01
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
16 oct. 2007 à 19:32
j'y ai pensé mais quand je rempli un Point[] j'ai une erreur du type index out of bounds array, je ne trouve pas de solutions.
merci
bye
0
bidou_01 Messages postés 134 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 1
16 oct. 2007 à 23:56
Bonsoir,

Peux tu poster le bout de code ou tu remplis ton tableau de points stp ?

Cordialement,

Bidou_01
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
17 oct. 2007 à 12:03
voici le code :
{
string



[]
result

;


char

[]
sepa

=

new

Char

[] {
'.'
};

string
MonText

;

MonText

=

this


.
textBox2

.
Text

;

result

=
MonText

.

Split

(
sepa

,
100
);


int

j

,
x

,
y

;


int

k

=-
10
;
Point

[] pts
= new
Point

[
20
];






{
for(j
=0
;j
<19;j
++)
{
y
= (( this
.pictureBox1
.Height
/2)-((Convert
.ToInt32(result
[0])*(j
*j
))+(Convert
.ToInt32(result
[2])*j
)+(Convert
.ToInt32(result
[4]))));
x
=j
;
pts
[j
]=new Point((x
),(y
));
}


}


result[0] ; result[2] ; result[4] ;  correspondent aux valeurs de a , b , c
0
bidou_01 Messages postés 134 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 1
18 oct. 2007 à 19:00
Bonsoir,

Hum, je ne vois pas trop ce qui peut se passer. C'est bizarre qu'il claque une IndexOutOfRangeException, alors que pour moi tu n'essais pas d'insérer hors des limite du tableau...

Tu as essayer de le débugger en pas à pas pour voir sur quelle valeur l'excéption est lancée?

Sinon je préfère utiliser tableau.Lenght dans les boucles. Bon ici ca ne changera rien, mais bien souvent ça évite des erreurs :)

Cordialement,

Bidou_01
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
18 oct. 2007 à 20:19
merci bidou grace a toi mon projet a bien avancé, l'utilisation de length a evité l'erreur, mais le poblème c'est que je ne peut pas utiliser des valeurs négatives pour j 
for(j=0;j<pts.length;j++)
         /
      ici
cela me remet lerreur indexoutofrangeexception

il y a t-il un moyen de pouvoir integrer les valeurs négatives?
merci davance
bye
0
Rejoignez-nous