{ File: equaquad.pas }

{ Scopo: uso di if-then-else }

program EquazioneSecondoGrado;
{ Calcola le radici di un'equazione di 2o grado. }

const
  prec = 1.0E-6;   { precisione usata per determinare se il discriminante e`
                     nullo }

var 
  a, b, c,         { coefficienti dell'equazione }
  d,               { quadrato del discriminante  }
  r, imm   : real; { parti reale e immaginaria   }


begin
  write('Immettere i 3 coefficienti: ');
  readln(a, b, c);
  d := sqr(b) - 4*a*c;
  if d > prec then       { discriminante positivo }
  begin
    d := sqrt(d);
    writeln('Due soluzioni reali:');
    writeln('  x1 = ', (-b-d)/(2*a):10:3);
    writeln('  x2 = ', (-b+d)/(2*a):10:3)
  end
  else if d < -prec then { discriminante negativo }
  begin
    r := -b/(2*a);
    imm := sqrt(-d)/(2*a);
    writeln('Due soluzioni complesse coniugate:');
    writeln('  x1 = ', r:10:3, ' + ', imm:10:3, ' i');
    writeln('  x2 = ', r:10:3, ' - ', imm:10:3, ' i')
  end
  else                   { discriminante nullo }
  begin
    writeln('Una soluzione doppia:');
    writeln('  x = ', -b/(2*a):10:3)
  end
end. { EquazioneSecondoGrado }