Faire une calculatrice avec C# [debutant]

Résolu
jeanpierre691 Messages postés 19 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 4 novembre 2009 - 1 nov. 2009 à 17:18
Whismeril Messages postés 18609 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 septembre 2023 - 25 déc. 2022 à 12:37
Bonjour.

J'essaye actuellement de faire une calculatrice a une ligne, c'est a dire faire par exemple sur une même ligne écrire 2 + 2 et une nous donne la réponse. Ou encore écrire 2 / 6 et il nous donne encore la réponse a la ligne suivante en écrivant : 2 / 6 = (réponse). Je suis débutant en C# et j'ai appris qu'il était assez complexe de faire un code pareille. J'utilise actuellement DOS pour compiler si cela peux vous aider. Pourriez vous me donner un exemple de ce genre de code afin de me mettre sur la bonne voie ou encore m'expliquer graduellement comment je dois m'y prendre pour le faire?


Rien de mieux que la joie ressentit lors d'une simple et bonne programmation!!
A voir également:

15 réponses

MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 11
3 nov. 2009 à 10:17
Salut,

alors pour ça on va faire relativement simple, lorsque tu as récupérer le string contenant la formule, il te faut récupérer l'index où se trouve l'opérateur, pour cela écrit ceci :

int indexOfOperateur = GetPositionOperateur(ref result, new char[] { '+', '-', '*', '/' });


Ici on prend le paramètre result et on lui dit quels sont les opérateurs à prendre en compte.
Cette méthode va regarder chaque caractère de la phrase et rechercher l'opérateur. (Facile, il suffit juste de s'arrêter lorsque l'on a un opérateur et que l'on en a déjà trouvé 1)

/// <summary>
        /// 
        /// </summary>
        /// 


        /// 


        /// <returns></returns>
        static private int GetPositionOperateur(ref string result, char[] p)
        {
            int index = 0;

            foreach (char s in result)
            {
                // Recherche +,-,/,* dans la formule
                int k = s.ToString().IndexOfAny(p);

                if (k == 0 && index > 0)
                    break;
                else
                    index++;
            }

            return index;
        }



Ensuite si on a un operateur, on calcule le résultat sinon, on affiche un message d'erreur :

if (indexOfOperateur != -1)
                Calculer(ref result, ref indexOfOperateur);
            else
                Console.WriteLine("Erreur ! Il faut rentrer trois termes comme ceci : a +|-|*|/ b");


Et la méthode Calculer est quasiment celle que j'ai donnée à ceci près que TryParse étant booléen, on teste si la conversion a réussi.

static private void Calculer(ref string result, ref int indexOfOperateur)
        {
            float computeResult = 0f;
            string[] cal = new string[3];

            cal[0] = result.Substring(0, indexOfOperateur);
            cal[1] = result[indexOfOperateur].ToString();
            cal[2] = result.Substring(indexOfOperateur + 1);

            float r1;
            if (!float.TryParse(cal[0], out r1))
            {
                Console.WriteLine("Erreur le premier membre n'est pas un nombre");
                return;
            }

            float r2;
            if (!float.TryParse(cal[2], out r2))
            {
                Console.WriteLine("Erreur ! Le second membre n'est pas un nombre");
                return;
            }

            switch (cal[1])
            {
                case "+":
                    computeResult = r1 + r2;
                    break;

                case "-":
                    computeResult = r1 - r2;
                    break;

                case "*":
                    computeResult = r1 * r2;
                    break;

                case "/":
                    if (r2 == 0)
                    {
                        Console.WriteLine("{0} / {1} = Indéfini 
", r1, r2);
                        Main();
                    }
                    else computeResult = r1 / r2;
                    break;
            }

            Console.WriteLine("{0} {1} {2} = {3}\n", r1, cal[1], r2, computeResult);
        }


Maintenant ta calculatrice est capable de gérer ceci :

-2 + -2
-5-7
5--78
-5+-78
-5/-87
2

Bonjour s'il-vous plait j'ai besoin de ce code si quelqu'un peux l'écrire correctement j'ai essayer mais sa ne marche pas

0
Whismeril Messages postés 18609 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 septembre 2023 629 > Loukmane
25 déc. 2022 à 12:37
0
Rejoignez-nous