|
Текст подпрограммы и версий pa15r_p.zip |
Тексты тестовых примеров tpa15r_p.zip |
Решение уравнения Диофанта.
Подпрограмма PA15R вычисляет частное решение уравнения
a x + b y = c
в целых числах, где a, b и c - заданные целые числа, причем значения a и b не равны нулю.
procedure PA15R(var A :Integer; var B :Integer; var C :Integer;
var Q :Array of Integer; var X :Integer;
var Y :Integer; var IERR :Integer);
Параметры
| A, B, C - | заданные значения коэффициентов исходного уравнения, A ≠ 0, B ≠ 0 (тип: целый); |
| Q - | целый одномерный массив, длина которого должна быть в пять раз больше, чем количество цифр в максимальном по модулю из чисел a, b и c; |
| X, Y - | целые переменные, значения которых на выходе полагаются равными вычисленному частному решению исходного уравнения; |
| IERR - | целая переменная, значение которой полагается равной признаку выявленной ошибки при счете; при этом: |
| IERR=65 - | когда исходное уравнение не определено; |
| IERR=66 - | когда решения исходного уравнения в целых числах не существует. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit TPA15R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, PA15R_p;
function TPA15R: String;
implementation
function TPA15R: String;
var
A,B,C,X,Y,IЕRR :Integer;
Q :Array [0..4] of Integer;
begin
Result := '';
A := 1;
B := 3;
C := 4;
PA15R(A,B,C,Q,X,Y,IERR);
Result := Result + Format('%6d',[IERR]) + #$0D#$0A;
Result := Result + Format('%6d',[X]) + #$0D#$0A;
Result := Result + Format('%6d',[Y]) + #$0D#$0A;
UtRes('TPA15R',Result); { вывод результатов в файл TPA15R.res }
exit;
end;
end.
Результаты:
IERR = 0
X = 1
Y = 1