Fehler im Programm zur Berechnung der Mitternachtsformel
-
Kann gelöscht werden, Fehler gefunden. Danke
-
Deine Fehlerbeschreibung ist absolut nichtssagend. Wenn du Hilfe erwartest, dann musst du schon konkretisieren was nicht funktioniert.
-
Was meinst du mit "Leider blicke ich mit dem if / else noch nicht ganz durch"? Bzw wo ist die Frage in deinem Beitrag?
btw, du hast da etwas vertauscht - bei D>0 hast du zwei Lösungen, bei D==0 eine Lösung. Und die einzelnen Lösungen solltest du auch nur berechnen, wenn du sicher bist daß es funktionieren wird.
-
Ah danke, da hatte ich was verwechselt mit D.
Naja, meine Frage bezieht sich darauf dass das Programm "nicht geht" ...Die Werte sind immer falsch - und wie ich sagte vermute ich das der Fehler, der dafür sorgt das meine Ergebnisse nicht stimmen evtl. im Bereich der ganzen IF-Anweisungen liegt.
-
Kannst du dieses "geht nicht" etwas genauer eingrenzen?
Ansonsten:
- wenn du die Diskriminante berechnet hast, kannst du sie auch für die Berechnung der Nullstellen nutzen
- wie ich schon sagte, solltest du nur die Nullstellen tatsächlich berechnen, die auch existieren
- ich sehe in deinem Code kein elsePS: Und du solltest dir angewöhnen, deine Quelltexte vernünftig einzurücken - bei diesem Zick-Zack ist es schwer, das zu lesen.
-
#include <math.h> #include <stdio.h> int main() { float a, b, c, D; printf("a = "); scanf("%f", &a); printf("b = "); scanf("%f", &b); printf("c = "); scanf("%f", &c); // Die PQ-Formel funktioniert nur, wenn a = 1 ist. Daher teilen wir alles durch a b /= a; c /= a; a = 1; printf("\nGleichung: %fx^2 + %fx + %f\n\n", a, b, c); D = pow(b / 2, 2) - c; printf("D = %f\n\nDa D = %d... ", D); if (D > 0) { printf("Es gibt zwei Loesungen:\n"); printf("x1 = %f\n", -(b / 2) + sqrt(D)); printf("x2 = %f\n", -(b / 2) - sqrt(D)); } else if (D == 0) { printf("Es gibt eine Loesung:\n"); printf("x1/x2 = %f\n", -(b / 2)); } else { printf("Es gibt keine Loesung\n"); } return 0; }