/* File: equaquad.c */
/* Time-stamp: "2001-03-06 11:08:58 calvanes" */
/* Scopo: uso di if-then-else */

#include <stdio.h>
#include <math.h>

#define prec  1.0e-6     /* precisione usata per determinare se il
                            discriminante e` nullo */

int main(void)
  /* Calcola le radici di un'equazione di 2o grado. */
{
  float a, b, c;   /* coefficienti dell'equazione */
  float d;         /* quadrato del discriminante  */
  float r, imm;    /* parti reale e immaginaria   */

  printf("Immettere i 3 coefficienti: ");
  scanf("%g%g%g", &a, &b, &c);

  d = b * b - 4 * a * c;
  if (d > prec) {                                  /* discriminante positivo */
    d = sqrt(d);
    printf("Due soluzioni reali:\n");
    printf("  x1 = %10.3f\n", (-b - d) / (2 * a));
    printf("  x2 = %10.3f\n", (d - b) / (2 * a));
  }
  else if (d < -prec) {                            /* discriminante negativo */
    r = b / (-2 * a);
    imm = sqrt(-d) / (2 * a);
    printf("Due soluzioni complesse coniugate:\n");
    printf("  x1 = %g + %g i\n", r, imm);
    printf("  x2 = %g - %g i\n", r, imm);
  }
  else {                                           /* discriminante nullo */
    printf("Una soluzione doppia:\n");
    printf("  x = %g\n", b / (-2 * a));
  }

  return 0;
}  /* main */