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 else 😉

    PS: 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;
    }
    

Anmelden zum Antworten