#include <stdio.h>          /* Verzweigungen */
#include <math.h>
/* 5.2 Gegeben sei die allgemeine Form der quadratischen Gleichung
ax² + bx + c = 0.
Einzulesen sind die Werte der Koeffizienten a, b und c und auszugeben sind alle
reellen Lösungen, bzw. ein entsprechender Text, wenn es keine gibt (b²-4ac < 0).
Hinweis:  x1,2 = (-b +/- sqrt(b²-4ac))/(2a).
5.3 Komplettieren Sie das Programm durch die Ausgabe komplexer Loesungen!
------------------------------------------------------------------------------*/
/* Testdaten:
    0, 0,5 -> Widerspr.           0,1,5 -> -5 lineare Gl.;      1,1,-2 -> -2, 1;
    1,-2,2 -> 1+i, 1-i (komplex)  1,6,9 -> -3 (Doppellösung)
------------------------------------------------------------------------------*/
int main()
{
  float r, x1, x2, a, b, c, d;


   printf("\n\nAllg. Form der quadratischen Gleichung ax^2+bx+c=0\n\n a= ");
   scanf("%f",&a);
   printf("\n b= "); scanf("%f",&b); printf("\n c= "); scanf("%f",&c);
   printf("\n\n");

   if( a==0)
   {  if( b==0)
             printf(" a=b=0, also keine Loesung da %f=0 nicht loesbar!", c);
      else 
      {  x1=-c/b; printf(" a=0, also lineare Gleichung, Loesung x= %f", x1);
      }
   }else
   {  d=b*b-4*a*c;
      if (d>0)
      {  r=sqrt(d); x1=(-b-r)/2/a; x2=x1+r/a;
         printf("Zwei reelle Loesungen: x1= %f, x2= %f\n",x1,x2);
      }
      if (d<0) {printf("Keine reelle Loesung!\n"); r=sqrt(-d)/2/a; b=-b/2/a;
                printf(" x1=%f + i*%f\n x2=%f - i*%f\n", b, r, b, r);
               }
      if (d==0)
      {  x1=-b/2/a; printf("Doppelloesung x= %f\n", x1);
      }
   }
   printf("\n\n"); system("PAUSE"); return 0;
}
