Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Quadratische Gleichungen

Empfohlene Antworten

Veröffentlicht

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");

 }

}

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

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.

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.