Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Blöde Fehlermeldung
EDU
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

Blöde Fehlermeldung

beantworten | zitieren | melden

Hallo zusammen,

mit C# kenne ich mich sogut wie garnicht aus.

An der FH sollten wir ein Programm mit C# schreiben, welches die Nullstellen einer Quadratischen Funktion berechnet. Allerdings bekomme ich immer eine Fehlermeldung sobald er in den Bereich kommt in welchem die Diskriminante zu berücksichtigen ist. Da gibt er mir als Ergebnis immer n. def. an.

Für Eure Hilfe danke ich euch jetzt schonmal.

Freundliche Grüße

EDU

Hier mal der gesamte Text.




using System;


namespace Funktion
{
    class Program
    {
        static void Main()
        {
            string a;
            string b;
            string c;
            double x1;
            double x2;
            double diskriminante=0;
            double x=0;

            Console.WriteLine("Bitte geben Sie den Wert für a ein:");
            a = Console.ReadLine();
            double da;
            da = Convert.ToDouble(a);

            Console.WriteLine("Bitte geben Sie den Wert für b ein:");
            b = Console.ReadLine();
            double db;
            db = Convert.ToDouble(b);

            Console.WriteLine("Bitte geben Sie den Wert für c ein:");
            c = Console.ReadLine();
            double dc;
            dc = Convert.ToDouble(c);

            diskriminante = Math.Sqrt(db * db - 4 * da * dc);

            if (da == 0)
            {
                if (db == 0)
                {
                    if (dc == 0)

                        Console.WriteLine("Jedes X ist eine Lösung");

                    else

                        Console.WriteLine("Es gibt keine Lösung");
                }

                else
                    x = -dc / db;

                Console.WriteLine("Es gibt nur eine Lösung welche da lautet: x= " + x);
            }

            else
               
                if (diskriminante == 0)
                
                {
                    x = -db / 2 * da;

                    Console.WriteLine("Es gibt nur eine Lösung welche da lautet: x= " + x);
                }
                else
                {
                    if (diskriminante > 0) ;
                    {
                        x1 = (-db - Math.Sqrt(db * db - 4 * da * dc)) / 2 * da;
                        x2 = (-db + Math.Sqrt(db * db - 4 * da * dc)) / 2 * da;

                        Console.WriteLine("Die beiden Lösungen lauten: x1= " + x1 + " x2= " + x2);
                    }

                    if (diskriminante < 0)
                    {
                        double Re;
                        double Im;
                        Im = Math.Sqrt(db * db - 4 * da * dc) / 2 * da;
                        Re = -db / (2 * da);
                        Console.WriteLine("Es gibt zwei konjugiert komplexe Lösungen:");
                        Console.WriteLine("{0,10:F3} +-j {1,10:F3}", Re, Im);

                        

                    }
                }
            Console.ReadLine();
        }
       
    }
}

private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo EDU,

Wie poste ich richtig? Punkt 5

herbivore
private Nachricht | Beiträge des Benutzers
EDU
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Hallo herbivore,

tut mir leid dass ich so ungeschickt poste (bin halt recht "unerfahren").

der Fehler müsste hier irgendwo sein

aber genau weiß ich das ja auch nicht, sonst hätte ich den blöden fehler schon behoben. Kann es sein, dass die Zahlen die aus der Wurzel kommen einfach zu lang sind für die Zahl im double Format?


else
              
                if (diskriminante == 0)
                
                {
                    x = -db / 2 * da;

                    Console.WriteLine("Es gibt nur eine Lösung welche da lautet: x= " + x);
                }
                else
                {
                    if (diskriminante > 0) ;
                    {
                        x1 = (-db - Math.Sqrt(db * db - 4 * da * dc)) / 2 * da;
                        x2 = (-db + Math.Sqrt(db * db - 4 * da * dc)) / 2 * da;

                        Console.WriteLine("Die beiden Lösungen lauten: x1= " + x1 + " x2= " + x2);
                    }

                    if (diskriminante < 0)
                    {
                        double Re;
                        double Im;
                        Im = Math.Sqrt(db * db - 4 * da * dc) / 2 * da;
                        Re = -db / (2 * da);
                        Console.WriteLine("Es gibt zwei konjugiert komplexe Lösungen:");
                        Console.WriteLine("{0,10:F3} +-j {1,10:F3}", Re, Im);

                        

                    }
                }
            Console.ReadLine();
        }
      
    }
}
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo EDU,

es würde mir für den Anfang schon reichen, wenn du die exakte Fehlermeldung postet. (Normalerweise enthält diese dann auch die Zeilennummer, in der der Fehler aufgetreten ist.)

herbivore
private Nachricht | Beiträge des Benutzers
EDU
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Ach so, er führt das Programm schon aus, nur wo eigentlich stehen sollte x1 = 5 also die erste Nullstelle schreibt er x1 = n. def.

Aber das Programm wird ja ausgeführt somit gibt er mir keinen Zeilenfehler an.
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

Naja, n.def bedeutet nichts anderes als das in deiner Variable nen double.NaN (NotANumber) drin ist und des hat man meist bei Division durch 0. Geh doch mitm Debugger einfach mal schrittweise durch was für Werte deine Variable annimmt und bei welchen Befehl auf einmal dann NaN drinsteht.
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
EDU
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Hallo Talla,

vielen Dank für die Antwort. Diese bringt mich meiner Lösung auf jedenfall ein großen stück näher.
private Nachricht | Beiträge des Benutzers
dirkil
myCSharp.de - Member



Dabei seit:
Beiträge: 23

beantworten | zitieren | melden

Ich tippe eher darauf, daß eine Wurzel von einem negativen Wert gezogen werden soll.

Vielleicht postest Du mal, welche Werte Du für a, b und c eingibst, um den Fehler zu bekommen.
private Nachricht | Beiträge des Benutzers