Rechercher : dans
Par :

C# parser une equation pour faire un calcul

Dernière réponse le 16 jun 2008 à 10:59:04 Bob, le 3 avr 2008 à 21:28:13 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un calcul du style 5 + 4 - 1 dans une string et je dois calculer la valeur -> 8

voici ce que j'ai faire, je split tout dans un tableau (ok) mais apres quand je veux faire le calcul, j'ai un message d'erreur (cannot implicitly convert type 'string' to 'double').

Je ne vois pas ce que je dois faire pour corriger cela. Merci

public static double ParseEquation(string equation)
{
string[] arInfo = new string[5];

// define which character is seperating fields
char[] splitter = { ' ' };

arInfo = equation.Split(splitter);

double result = 0.0;

result = Convert.ToDouble(arInfo[0]) + arInfo[1] + Convert.ToDouble(arInfo[2]) + arInfo[3] + Convert.ToDouble(arInfo[4]);

return 0.0;
}

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « c# parser une equation pour faire un calcul » dans :
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
Langage C++ - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...

1

 Nack, le 16 jun 2008 à 10:59:04

Salut,

L'erreur vient du fait que tu ne peux pas transformer les chaines "+" et "-" pour les utiliser en temps qu'opérateurs de ton équation et retourner le double que tu attends.

A la place tu peux faire quelque chose comme cela:

public double ParseEquation(string equation)
        {
            string[] monEquation = equation.Split("+-".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            
            string operateurs = @"(?<Operator>[+|-])";
            System.Text.RegularExpressions.MatchCollection operateursCollection = System.Text.RegularExpressions.Regex.Matches(equation, operateurs, System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace);

            double resultat = Convert.ToDouble(monEquation[0]);
            for (int i = 0; i < monEquation.Length - 1; i++)
            {
                resultat = CalculerOperateur(resultat, Convert.ToDouble(monEquation[i + 1]), operateursCollection[i].Value);
            }
            return resultat;
        }

        private double CalculerOperateur(double nombre1, double nombre2, string op)
        {
            if (op == "-")
            {
                return nombre1 - nombre2;
            }
            else if (op == "+")
            {
                return nombre1 + nombre2;
            }
            else
            {
                // Gérer l'erreur d'opérateur
            }
        }

Répondre à Nack
Collection CommentÇaMarche.net