Intrusions dans le programme

Fermé
simli Messages postés 96 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 29 juin 2023 - Modifié par baladur13 le 7/01/2016 à 15:38
simli Messages postés 96 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 29 juin 2023 - 12 janv. 2016 à 07:23
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 8/01/2016 à 16:13
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 vendredi 22 décembre 2006 Statut Membre Dernière intervention 29 juin 2023 7
8 janv. 2016 à 13:56
ç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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 8/01/2016 à 14:03
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
8 janv. 2016 à 14:03
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 vendredi 22 décembre 2006 Statut Membre Dernière intervention 29 juin 2023 7
8 janv. 2016 à 16:00
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > simli Messages postés 96 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 29 juin 2023
8 janv. 2016 à 16:04
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
7 janv. 2016 à 16:39
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 vendredi 22 décembre 2006 Statut Membre Dernière intervention 29 juin 2023 7
8 janv. 2016 à 14:01
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 vendredi 22 décembre 2006 Statut Membre Dernière intervention 29 juin 2023
8 janv. 2016 à 18:34
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 dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 8/01/2016 à 18:20
Ah oui? Alors le type double en C# sort des normes habituelles. :--D
double (C# Reference)
0