program Reseni_kvadraticke_rovnice;

uses crt;

var a, b, c: real;

function linear(var b, c:real): real;
begin
  linear := -(c/b);
end;

function discr(var a, b, c: real): real;
begin
  discr := sqr(b) - (4*a*c);
end;

function x1(var a, b, c: real): real;
begin
  x1 := (-b + sqrt(discr(a,b,c)))/(2*a);
end;

function x2(var a, b, c: real): real;
begin
  x2 := (-b - sqrt(discr(a,b,c)))/(2*a);
end;

BEGIN
  clrscr;
  writeln('Program na vypocet kvardaticke rovnice ve tvaru ax^2 + bx + c = 0.');
  write('Vkladej postupne ciselne hodnoty a, b, c: ');
  readln(a,b,c);
  writeln;
  if (a = 0) and (b <> 0) then
    writeln('Fce je linearni - ma jedno reseni: x = ',linear(b,c):10:5,'.')
  else
  if (a = 0) and (b = 0) and (c <> 0) then
    writeln('Fce nema v mnozine realnych cisel reseni.')
  else
  if (a = 0) and (b = 0) and (c = 0) then
    writeln('Fce ma v mnozine realnych cisel nekonecne mnoho reseni.')
  else
  if (discr(a,b,c) = 0) then
  begin
    writeln('Fce ma v mnozine realnych cisel jedno dvojnasobne reseni.');
    writeln('x1 = ',x1(a,b,c):5:5,', x2 = ',x2(a,b,c):5:5,'.');
  end
  else
  if (discr(a,b,c) < 0) then
    writeln('Fce nema v mnozine realnych cisel reseni - diskriminant je zaporny.')
  else begin
    writeln('Fce ma v mnozine realnych cisel dve reseni.');
    writeln('x1 = ',x1(a,b,c):10:5,', x2 = ',x2(a,b,c):10:5,'.');
  end;
  writeln;
  writeln('Stiskni ENTER ...');
  readln;
END.