Текст подпрограммы и версий 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