freshes Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 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"); } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 Warum? Persönlicher Geschmack. Für ein einfaches "hoch 2"? Was wäre der Vorteil? Lesbarkeit Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schandfleck Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.