Текст подпрограммы и версий
zp13i_p.zip 
Тексты тестовых примеров
tzp13i_p.zip 

Подпрограмма:  ZP13I (модуль ZP13I_p)

Назначение

Вычисление рациональных корней полиномов с целыми коэффициентами.

Математическое описание

Подпрограмма ZP13I вычисляет M рациональных корней полинома степени N

        A(1)  +  A(2) X  + ... +  A(N + 1) XN 

с целыми коэффициентами. Ненулевые рациональные корни  pi / q i ,  i = 1, 2,..., M, размещаются в массивах P и Q соответственно.

Использование

procedure ZP13I(var A :Array of Integer; N :Integer;
                var P :Array of Integer; var Q :Array of Integer;
                var M :Integer);

Параметры

A - целый одномерный массив длины N + 1, содержащий заданные коэффициенты полинома в порядке возрастания степеней;
N - заданная степень полинома (тип: целый);
P, Q - целые одномерные массивы длины N + 1, содержащие вычисленные рациональные корни  pi / q i ,  i = 1, 2,..., M;
M - целая переменная, содержащая на выходе количество рациональных корней.

Версии: нет

Вызываемые подпрограммы: нет

Замечания по использованию

  В некоторых случаях последний вычисленный корень может совпадать по значению с первым. Поэтому массивы P и Q должны иметь максимальную длину N + 1, а не N.

Пример использования

Unit tzp13i_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ZP13I_p;

function tzp13i: String;

implementation

function tzp13i: String;
var
_i,M :Integer;
P :Array [0..3] of Integer;
Q :Array [0..3] of Integer;
const
A :Array [0..3] of Integer = ( 3,14,3,-36 );
begin
Result := '';  { результат функции }
ZP13I(A,3,P,Q,M);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
 begin
  Result := Result + Format('%5d ',[P[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
 begin
  Result := Result + Format('%5d ',[Q[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
Result := Result + Format('%5d ',[M]) + #$0D#$0A;
UtRes('tzp13i',Result);  { вывод результатов в файл tzp13i.res }
exit;
end;

end.


Результаты: 

           P   =   (-1, 3, -3), 
           Q   =   ( 3, 4,  9),  
           M   =   3