ВУЗ:
Составители:
Рубрика:
9
// объявления подпрограмм
function Plus(r1,r2:Rational): Rational; // Плюс
function Minus(r1,r2:Rational): Rational; // Минус
function Dot(r1,r2:Rational): Rational; // Точка
function Slash(r1,r2:Rational): Rational; // Косая черта
procedure Add(var r1:Rational; r2:Rational); // Прибавить
procedure Subtract(var r1:Rational; r2:Rational); // Вычесть
procedure MultiplyBy(var r1:Rational; r2:Rational); // УмножитьНа
procedure DivideBy(var r1:Rational; r2:Rational); // РазделитьНа
{ Поскольку результат выполнения перечисленных выше процедур
сохраняется в первом аргументе, этот аргумент должен быть
передан по ссылке, а не по значению. }
implementation
uses SysUtils; // модуль включает поддержку исключений
procedure Normalize(var r:Rational);
{ Процедура приводит рациональное число r, передаваемое в качестве
параметра, к нормальной форме: числитель - целое число,
знаменатель - натуральное. }
begin
if r.den<0 then begin
r.num:=-r.num; r.den:=-r.den;
end;
end;
procedure Reduce(var r:Rational);
{ Процедура сокращает числитель и знаменатель числа r на их
наибольший общий делитель. }
var a,b:Integer;
begin // используется алгоритм Евклида поиска НОД
a:=Abs(r.num); b:=r.den;
while a<>0 do
if a>=b then a:=a-b else b:=b-a;
// по завершении цикла b=НОД(r.num,r.den)
r.num:=r.num div b; r.den:=r.den div b;
end;
// определения подпрограмм, объявленыых в разделе интерфейса
function Plus(r1,r2:Rational): Rational;
var res: Rational;
begin
res.num:=r1.num*r2.den+r1.den*r2.num;
res.den:=r1.den*r2.den;
Normalize(res); Reduce(res);
// объявления подпрограмм
function Plus(r1,r2:Rational): Rational; // Плюс
function Minus(r1,r2:Rational): Rational; // Минус
function Dot(r1,r2:Rational): Rational; // Точка
function Slash(r1,r2:Rational): Rational; // Косая черта
procedure Add(var r1:Rational; r2:Rational); // Прибавить
procedure Subtract(var r1:Rational; r2:Rational); // Вычесть
procedure MultiplyBy(var r1:Rational; r2:Rational); // УмножитьНа
procedure DivideBy(var r1:Rational; r2:Rational); // РазделитьНа
{ Поскольку результат выполнения перечисленных выше процедур
сохраняется в первом аргументе, этот аргумент должен быть
передан по ссылке, а не по значению. }
implementation
uses SysUtils; // модуль включает поддержку исключений
procedure Normalize(var r:Rational);
{ Процедура приводит рациональное число r, передаваемое в качестве
параметра, к нормальной форме: числитель - целое число,
знаменатель - натуральное. }
begin
if r.den<0 then begin
r.num:=-r.num; r.den:=-r.den;
end;
end;
procedure Reduce(var r:Rational);
{ Процедура сокращает числитель и знаменатель числа r на их
наибольший общий делитель. }
var a,b:Integer;
begin // используется алгоритм Евклида поиска НОД
a:=Abs(r.num); b:=r.den;
while a<>0 do
if a>=b then a:=a-b else b:=b-a;
// по завершении цикла b=НОД(r.num,r.den)
r.num:=r.num div b; r.den:=r.den div b;
end;
// определения подпрограмм, объявленыых в разделе интерфейса
function Plus(r1,r2:Rational): Rational;
var res: Rational;
begin
res.num:=r1.num*r2.den+r1.den*r2.num;
res.den:=r1.den*r2.den;
Normalize(res); Reduce(res);
9
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »
