Intrusions dans le programme
simli
Messages postés
121
Statut
Membre
-
simli Messages postés 121 Statut Membre -
simli Messages postés 121 Statut Membre -
bonjour
je viens de commencer a m’exercer dans le C# et là je fais un petit prog de resolution d'équations de second degré dont voici le code
mais dès que je compile il apparait que cette equation n'admet pas de racines
-1
appuyez sur une touche pour continuer....
1- svp dites moi pourqui
2- le -1 là vien d'où?
merci
je viens de commencer a m’exercer dans le C# et là je fais un petit prog de resolution d'équations de second degré dont voici le code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static double racines(double a, double b, double c)
{ double det = b * b - 4 * a * c;
double x1 = (-b + Math.Sqrt(det)) / 2 * a;
double x2 = (-b - Math.Sqrt(det)) / 2 * a;
double x = (-b) / 2 * a;
if (det < 0)
Console.WriteLine("cette equation n'admet pas de racines");
if (det==0)
Console.WriteLine("cette equation admet une solution double qui est X= " + x);
return x;
if (det > 0)
Console.WriteLine("cette equation admet deux solutions distinctes qui sont: X1 = " + x1 + " et X2 = " + x2);
return x1+x2;
}
static void Main(string[] args)
{
double valeur = racines(1,2,4);
Console.WriteLine(valeur);
}
}
}
mais dès que je compile il apparait que cette equation n'admet pas de racines
-1
appuyez sur une touche pour continuer....
1- svp dites moi pourqui
2- le -1 là vien d'où?
merci
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
2 réponses
-
Bonjour,
Le -1 ? il vient de ta ligne :Console.WriteLine(valeur);
qui retourne la valeur de X
Tu devrais plutôt écrire ton code ainsi :class Program { static double racines(double a, double b, double c) { string result=""; double det = b * b - 4 * a * c; double x1 = (-b + Math.Sqrt(det)) / 2 * a; double x2 = (-b - Math.Sqrt(det)) / 2 * a; double x = (-b) / 2 * a; if (det < 0) result = "cette equation n'admet pas de racines"; if (det==0) result = "cette equation admet une solution double qui est X= " + x; if (det > 0) result = "cette equation admet deux solutions distinctes qui sont: X1 = " + x1 + " et X2 = " + x2; return result; } static void Main(string[] args) { string valeur = racines(1,2,4); Console.WriteLine(valeur); } }
Edit : correction de type sur la valeur de retour.
Cordialement,
Jordane-
-
Il faudrait que tu retourne un ARRAY de valeurs....
https://www.microsoft.com/en-us/download/details.aspx?id=55979
Sinon tu ne pourras pas lire séparément X1 et X2 -
Edit: Modification du lien :
Langage C# ....;
https://www.microsoft.com/en-us/download/details.aspx?id=55979 -
-
-
-
Bonjour
double x1 = (-b + Math.Sqrt(det)) / 2 * a;
Tu es sûr de ta formule ? Moi j'aurais mis/ 2 / a
ou/ (2 *a)
.
En en calculant la racine carrée de det avant d'avoir vérifié son signe, es-tu bien conscient de ce que tu fais ?-
le signe du determinant n'est pas un probleme.
lorsqu'il est négatif normalement sa racine carrée est un nombre complexe- sa racine carrée est un nombre complexe
C'est bien ce que je pensais, tu n'es pas conscient de ce que tu fais.
D'après la doc de C#, la racine carrée d'un nombre négatif c'est la valeur spéciale NaN (Not a Number).
https://docs.microsoft.com/fr-fr/dotnet/api/system.math.sqrt?redirectedfrom=MSDN&view=netframework-4.8
-
Ah oui? Alors le type double en C# sort des normes habituelles. :--D
double (C# Reference)
-