Показать сообщение отдельно

  #1  
Старый 24.04.2008, 23:28
VERte][
Участник форума
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме:
3013539

Репутация: 441
По умолчанию

Цитата:
Сообщение от krypt3r  
Гг, должно быть так
Код:
writeln('x1=',(-b+sqrt(d))/(2*a))
Если дискриминант меньше нуля, это не значит, что корней нет, это значит, что корни комплексные
Учим матчасть

ЗЫ. А хотя какие в школе комплексные числа

ЗЗЫ.
Код:
program equation;

procedure GetCoeff (var a : real; var b : real; var c : real);
begin
  write ('Vvedite koefficienty cherez probel: ');
  readln (a, b, c);
  writeln (a : 0 : 3, 'x^2 + ', b : 0 : 3, 'x + ', c : 0 : 3);
end;

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

var
  a, b, c, d, x1, x2 : real;

begin
  GetCoeff (a, b, c);
  d := GetDiscriminant (a, b, c);
  if d > 0 then begin
    x1 := (-b - sqrt (d)) / (2 * a);
    x2 := (-b + sqrt (d)) / (2 * a);
    writeln ('x1 = ', x1 : 0 : 3);
    writeln ('x2 = ', x2 : 0 : 3);
  end
  else if d = 0 then begin
    x1 := -b / (2 * a);
    writeln ('x = ', x1 : 0 : 3);
  end
  else begin
    x1 := -b / (2 * a);
    x2 := sqrt (abs (d)) / (2 * a);
    writeln ('x1 = ', x1 : 0 : 3, ' - i * ', x2 : 0 : 3);
    writeln ('x2 = ', x1 : 0 : 3, ' + i * ', x2 : 0 : 3);
  end;
end.
Да ты конечно крут, но комплексные корни (по крайней мере в универе) кроме как в жордановой форме в каноничском базисе или в нахождении инвариантных пространств оператора больше нигде не нужны...
 
Ответить с цитированием