/* loes4-2.c Loesung der Aufgabe 4.2, quadratische Gleichung */


#include <stdio.h>
#include <math.h>      /* sqrt    */
#include <ctype.h>     /* tolower */

#define EPSILON 1E-6   /* Genauigkeit der 0 */

int main(void)
{
  double a, b, c;      /* die Koeffizienten      */
  double d;            /* Diskriminate b*b - 4ac */
  double re, im;       /* Realteil und eventueller Imaginaerteil der Loesungen */
  char weiter[5];


  printf("Loesung von quadratischen Gleichungen der Form\na.x^2 + b.x + c = 0\n\n");

  do {
    printf("a = ");
    scanf("%lf", &a);
    printf("b = ");
    scanf("%lf", &b);
    printf("c = ");
    scanf("%lf", &c);

    d = b*b - 4*a*c;
    if (fabs(d) < EPSILON)  {  /* eine Doppel-Loesung */
      re = -b/2.0/a;
      printf("x1 = x2 = %8.3f\n\n", re);
    }
    else if (d > 0) {          /* zwei reelle Loesungen */
      re = (-b + sqrt(d))/2.0/a;
      printf("x1 = %8.3f, ", re);
      re = (-b - sqrt(d))/2.0/a;
      printf("x2 = %8.3f\n", re);
    }
    else {                     /* zwei imaginaere Loesungen */
      re = -b/2.0/a;
      im = sqrt(-d)/2.0/a;
      printf("x1 = %8.3f +j %-8.3f\n", re, im);
      printf("x2 = %8.3f -j %-8.3f\n", re, im);
    }
    printf("Weitere Gleichung ja/nein ? ");
    scanf("%s", weiter);
    weiter[0] = tolower(weiter[0]);
  } while (weiter[0] == 'j');

  return 0;

}