/*************************************************************************** * * * Fachhochschule Koeln Matthias Gross * * Nachrichtentechnik WS 1996/97 * * * * Das Programm QuadGleich berechnet nach * * Eingabe * * von Koeffizenten a, b, c * * die Nullstellen einer Quadratischen Gleichung der Form * * a x^2 + b x + c = 0 * * Hierbei werden alle Faelle beruecksichtigt. * * * ***************************************************************************/ #include /* Standard-Includes vornehmen */ #include /* Fuer abs() und sqrt() */ /*--- Das Hauptprogramm von QuadGleich ---*/ void main() { double a, b, c; /* Die Koeffizenten der Gleichung */ double x1, x2; /* Die max. 2 Loesungen der Gleichung */ double d; /* Allgemeine Diskriminante */ int k; /* Anzahl der Loesungen der Gleichung */ printf("\nLoesung der quadratischen Gleichung a x^2 + b x + c = 0\n"); printf("Bitte geben Sie a, b, c ein:\n"); scanf("%lf%lf%lf", &a, &b, &c); /* Einlesen der Koeffizenten */ if (a==0) /* Abarbeiten der Spezialfaelle */ if (b==0) if (c==0) { printf("\nLoesungsmenge ist ganz IR (Y=0)"); k = -1; /* bel. viele Loesungen */ } else k = 0; /* Keine Loesung */ else { /* Linearer Fall, 1 Loesung */ x1 = -c/b; k = 1; } else { d = ( b*b / 4 / a - c )/a; /* Bestimmung der Diskriminante */ x1 = -b / 2 / a; if (d==0) /* Nur eine Loesung? */ k = 1; else if (d<0) { printf("\nKeine reellen Loesungen\n"); k = 0; } else { x2 = x1 + sqrt(d); /* Berechnen der Loesungen */ x1 = x1 - sqrt(d); if (abs(x2)>abs(x1)) /* Anwendung des Satzes von Vieta */ x1 = c / a / x2; /* (Erhoeht Genauigkeit) */ else x2 = c / a / x1; k=2; } } if (k>0) /* Gibt es ueberhaupt Loesungen? */ { printf("\nEs gibt %i Loesungen", k); printf(": x1 = %lf", x1); /* Erste Loesung ausgeben */ } if (k>1) /* Falls vorhanden 2. Loesung ausg.*/ printf(", x2 = %lf", x2); printf("\n\n\n"); /* und noch eine neue Zeile */ }