Создать функцию, которая для двух данных чисел определяет в каком числе произвольных чисел больше - Turbo Pascal
Формулировка задачи:
создать функцию,которая для двух данных чисел определяет в каком числе произвольных чисел больше
Решение задачи: «Создать функцию, которая для двух данных чисел определяет в каком числе произвольных чисел больше»
textual
Листинг программы
function DiffNumb(x: LongInt): Byte;
var
Result, temp: Byte;
s: Set Of 0..9;
begin
s := []; Result := 0; x := Abs(x);
repeat
temp := x mod 10;
x := x div 10;
if Not(temp in s)
then
Inc(Result);
Include(s, temp);
until (x = 0);
DiffNumb := Result;
end;
function Compare(const x, y: LongInt; var z: LongInt): Boolean;
var
Result: Boolean;
xx, yy: Byte;
begin
xx := DiffNumb(x); yy := DiffNumb(y);
Result := (xx <> yy);
if (Result)
then
begin
if (xx > yy)
then
z := x
else
z := y;
end;
Compare := Result;
end;
var
x, y, z: LongInt;
begin
Write('Input x: '); ReadLn(x);
Write('Input y: '); ReadLn(y);
if (Compare(x, y, z))
then
begin
if (z = x)
then
WriteLn('First')
else
WriteLn('Second');
end
else
WriteLn('Same');
end.
Объяснение кода листинга программы
- Функция
DiffNumbпринимает два аргумента типаLongIntи возвращает один байт (Byte). Она использует переменнуюs, которая представляет собой множество от 0 до 9, и переменнуюResult, которая инициализируется значением 0. Затем функция выполняет следующие действия:- Инициализирует переменную
xабсолютным значением входного аргументаx. - В цикле повторяется, пока
xне станет равным 0.- Вычисляет остаток от деления
xна 10 и сохраняет его в переменнойtemp. - Делит
xна 10 и сохраняет результат в переменнойx. - Если
tempне содержится в множествеs, то увеличивает значениеResultна 1. - Добавляет
tempв множествоs.
- Вычисляет остаток от деления
- Завершает цикл, когда
xстановится равным 0. - Возвращает значение
Result.
- Инициализирует переменную
- Функция
Compareпринимает три аргумента:const x,const yиvar z: все они типаLongInt. Она использует две переменныеxxиyy: обе они инициализируются результатами вызова функцииDiffNumbдляxиyсоответственно. Затем функция выполняет следующие действия:- Если значение
xxотличается от значенияyy, то устанавливает значениеResultвTrueи начинает выполнять следующие действия:- Если
xxбольшеyy, то устанавливает значениеzравнымx. - Иначе устанавливает значение
zравнымy.
- Если
- Возвращает значение
Result.
- Если значение
- В основной части программы вводятся значения
xиyс помощью функцииReadLn. Затем вызывается функцияCompareс аргументамиx,yиz. В зависимости от результата сравнения выводится соответствующее сообщение.