Calcul expression mathématique

Signaler
Messages postés
91
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
18 octobre 2007
-
Messages postés
91
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
18 octobre 2007
-
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

Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
Bonjour,

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

Cordialement,

Bidou_01
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Salut,

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

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
91
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
18 octobre 2007

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.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
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
*/
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
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
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
Excuse moi j'ai répondu complètement HS ^^
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Messages postés
91
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
18 octobre 2007

merci a tous davoir répondu, je ne connaissait pas sqrt( ) le probleme est résolu merci.
bye
Messages postés
91
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
18 octobre 2007

désolé je suis allé trop vite , x1et x2 me permettent ils de faire une liste de points pour tracer un graph?
merci
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
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
Messages postés
91
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
18 octobre 2007

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
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
Bonsoir,

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

Cordialement,

Bidou_01
Messages postés
91
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
18 octobre 2007

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
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
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
Messages postés
91
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
18 octobre 2007

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