rendered paste body#include <stdio.h>#include <math.h>int main(void){ /* folgende 6 Ergebniskategorien sind möglich: 1. Kategorie: a=0 -> lineare Gleichung mit einer Lösung 2. Kategorie: D=0, quadr. Gleichung mit einer (doppelten) Lösung 3. Kategorie: D<0, da Diskriminante negativ -> komplexe Lösung 4. Kategorie: D>0, quadr. Gleichung mit zwei Lösungen 5. Kategorie: a=b=c=0 -> triviale Lösung 6. Kategorie: a=b=0, c=x -> keine Lösung, da c ungleich 0 */ char berechnung='j'; float a,b,c,d,p,q,x1,x2; while(berechnung!='n') { printf("\nBerechnung a*x^2+b*x+c=0\n\n"); printf("Koeffizient a: "); scanf("%f", &a); fflush(stdin); printf("Koeffizient b: "); scanf("%f", &b); fflush(stdin); printf("Koeffizient c: "); scanf("%f", &c); fflush(stdin); if(a==0) { if(b==0 && c==0) { //5. Kategorie printf("\nTriviale L\224sung, da 0=0"); } if(b==0 && c!=0) { //6. Kategorie printf("\nKeine L\224sung, da c!=0 Widerspruch ergibt"); } if(b!=0 && c!=0) { //1. Kategorie printf("\nEs liegt lineare Gleichung vor -> eine L\224sung:\n"); // 1. Kategorie x1=-c/b; printf("x=%f", x1); } } else { //Umformung p=b/a; q=c/a; d=(b*b)-(4*a*c); //Berechnung der Diskriminante if(d<0.0000001 && d>-0.0000001) { // 2. Kategorie | festlegen der Epsilonumgebung von 10^-7 und Test x1=-b/(2*a); printf("\nQuadratische Gleichung mit Diskriminante=0, eine (doppelte) L\224sung:"); printf("\nx=%f", x1); } if(d<0) { // 3. Kategorie printf("\nQuadratische Gleich mit negativer Diskriminante:\nkonj. komplexe L\224sung"); printf("\nx1=%f + %fi", -p/2, sqrt(-((p*p)/4-q))); printf("\nx1=%f - %fi", -p/2, sqrt(-((p*p)/4-q))); } if(d>0) { //4. Kategorie x1=-p/2 + sqrt((p*p)/4-q); x2=-p/2 - sqrt((p*p)/4-q); printf("\nQuadratische Gleichung mit zwei L\224sungen:"); printf("\nx1=%f", x1); printf("\nx2=%f", x2); } } printf("\n\nErneute Berechnung? j/n: "); berechnung=getchar(); fflush(stdin); } exit(0);}