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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    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
    2. 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
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > 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
  2. 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
    1. 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
    2. jisisv Messages postés 3678 Statut Modérateur 936
       
      Ah oui? Alors le type double en C# sort des normes habituelles. :--D
      double (C# Reference)
      0