Intrusions dans le programme

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

  1. Modérateur
    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. ç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?
    2. j'ai appliqué ton code mais il en ressort une erreur qui di:" Impossible de convertir implicitement le type 'string' en 'double'."
    3. Modérateur
      @simliA 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 !
  2. 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 ?
    1. le signe du determinant n'est pas un probleme.
      lorsqu'il est négatif normalement sa racine carrée est un nombre complexe