Intrusions dans le programme

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
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

jordane45 Messages postés 40050 Statut Modérateur 4 758
 
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                                                                 
1
simli Messages postés 121 Statut Membre 7
 
ça sous cet angle. maintenant que tu me dis c vrè que ça peu vraiment m'aider.
stp g fais donc comment pour lire les valeurs?
0
jordane45 Messages postés 40050 Statut Modérateur 4 758
 
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
0
jordane45 Messages postés 40050 Statut Modérateur 4 758
 
Edit: Modification du lien :
Langage C# ....;
https://www.microsoft.com/en-us/download/details.aspx?id=55979
0
simli Messages postés 121 Statut Membre 7
 
j'ai appliqué ton code mais il en ressort une erreur qui di:" Impossible de convertir implicitement le type 'string' en 'double'."
0
jordane45 Messages postés 40050 Statut Modérateur 4 758 > simli Messages postés 121 Statut Membre
 
A quelle endroit ?
Sachant qu'après... pour "récupérer" ces valeurs ... tu ne peux plus simplement en faire un Console.WriteLine ...
vu que ce n'est plus du "text" mais un ARRAY !
0
Utilisateur anonyme
 
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 ?
0
simli Messages postés 121 Statut Membre 7
 
le signe du determinant n'est pas un probleme.
lorsqu'il est négatif normalement sa racine carrée est un nombre complexe
0
Utilisateur anonyme > simli Messages postés 121 Statut Membre
 
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
0
jisisv Messages postés 3678 Statut Modérateur 934
 
Ah oui? Alors le type double en C# sort des normes habituelles. :--D
double (C# Reference)
0