Intrusions dans le programme

simli Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   -  
simli Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 96 Date d'inscription   Statut Membre Dernière intervention   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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Edit: Modification du lien :
Langage C# ....;
https://www.microsoft.com/en-us/download/details.aspx?id=55979
0
simli Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > simli Messages postés 96 Date d'inscription   Statut Membre Dernière intervention  
 
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 96 Date d'inscription   Statut Membre Dernière intervention   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 96 Date d'inscription   Statut Membre Dernière intervention  
 
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 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
Ah oui? Alors le type double en C# sort des normes habituelles. :--D
double (C# Reference)
0