Veröffentlicht 30. November 201014 j 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"); } }
30. November 201014 j 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
30. November 201014 j 3. ich wäre statt '-p' 'p*-1' verwendenWarum? 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.
30. November 201014 j Warum? Persönlicher Geschmack. Für ein einfaches "hoch 2"? Was wäre der Vorteil? Lesbarkeit
30. November 201014 j 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.
30. November 201014 j 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.