Zum Inhalt springen

Quadratische Gleichungen


Empfohlene Beiträge

Geschrieben

Hallo, ich hab hier eine Aufgabe, mit der ich nicht zurecht komme. Es sollen per Tastatureingabe rationale Zahlen für p und q der quadratischen Gleichung x² + p*x + q = 0 eingegeben werden.

Dazu soll im Programm die Diskriminante berechnet werden: D = p² - 4*q

Dann gibt es Fallunterscheidungen für D = 0, D>0 und D<0. Die entsprechenden Funktionen x1 und x2 für jeden Fall hab ich ins Programm geschrieben. Ich weiß jetzt aber nicht wie ich weiter vorgehen soll, soll ich die if-Anweisung verwenden? oder mit case operieren? Im Code ist für euch wohl unschwer zu erkennen, dass das nicht funktioniert, bekomm das Programm einfach nicht zum Laufen. Für Hilfestellungen wäre ich sehr dankbar.

class A8

{ public static void main(String[] args)

 {int p, q, D, x1, x2, j;

 System.out.println("Quadratische Gleichungen");


  /* Tastatureingabe von p       */

  System.out.println("Bitte rationale Zahl p eingeben");

  p=IO1.einint();


  /* Tastatureingabe von q       */

  System.out.println("Bitte rationale Zahl q eingeben");

  q=IO1.einint();



  do

  {D=p*p - 4*q;

   System.out.println(p+" hoch "+2+" - "+4+" * "+q+" = "+D);

   }

   if (D > 0)

   { x1 = -p/2 + (Math.sqrt(D))/2;

     x2 = -p/2 - (Math.sqrt(D))/2;

   }

    if (D = 0)

   { x1 = -p/2;

     x2 = -p/2;


   }


   if (D < 0)

   { x1 = -p/2 + j * (Math.sqrt(-D))/2;

     x2 = -p/2 - j * (Math.sqrt(-D))/2;

} 

    System.out.println("Ende der Berechnung");

 }

}

Geschrieben

1. 'do' ist ein Konstrukt für eine (fußgesteuerte) Schleife und hier völlig fehl am Platz

2. '=' ist ein Zuweisungsoperator und kein Vergleichsoperator

3. ich wäre statt '-p' 'p*-1' verwenden

4. wenn du schon die Math-Klasse für die Wurzel nimmst, warum dann nich auch zum potenzieren?

5. Du sollst bestimmt noch x1 und x2 ausgeben

Geschrieben
3. ich wäre statt '-p' 'p*-1' verwenden
Warum?

4. wenn du schon die Math-Klasse für die Wurzel nimmst, warum dann nich auch zum potenzieren?
Für ein einfaches "hoch 2"? Was wäre der Vorteil?

@freshes:

Wenn du da mit rationalen Zahlen arbeiten sollst, ist der Datentyp int ungeeignet, weil der nur ganze Zahlen speichern kann.

Geschrieben

Die Sachen mit den int, dem do und dem Vergleich wurden ja schon angesprochen.

Schaue Dir aber auch mal die Mathematik hinter Deinem Programm an. Den Fall D=0 brauchst Du nicht extra zu behandeln. Wirf besonders auch einen Blick auf den Fall D<0. Wozu dient das j? Du hast es als int deklariert, aber nie einen Wert zugewiesen. Hast Du die Formeln aus der Schule, oder aus einem Buch?

Wenn Du es nicht auf Anhieb alles hinbekommst, poste hier nochmal eine verbesserte Version Deines Programms.

Geschrieben

Ich will niemandem zu nahe treten.

Meine Frage wäre, hast du die Mathematik, die du implementieren sollst wirklich verstanden ? Wirklich verstanden. Weil das ist das wichtige hinter der Sache.

Ist ne ehrliche Frage, nimms nich persöhnlich, aber wenn die Mathe Sache nich durch is, dann wär das der Part an dem man ansetzen müsste wenn man was hilfreiches posten will.

Gruß

Sven

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...