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
25 déc. 2022 à 08:38
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
25 déc. 2022 à 12:37
https://www.commentcamarche.net/infos/25899-forum-ccm-mode-d-emploi-demander-de-l-aide-pour-un-exercice/