Вычитаем первое число из второго.
Если результат отрицательный, то первое меньше второго.
Если нулевой, то они равны.
Если положительный, то первое больше второго.
Найдем разность между первым и вторым значением: c=a-b
Все что нам требуется сделать, это выяснить, является ли с положительным числом.
Например, используя функцию сигнум, можно получить вариант функции Хевисайда, которая будет принимать значение 1 только для положительных значений, а во всех остальных случаях обращаться в ноль. f(c)=[(sgn(c)+1/)2]
В нашем случае можно записать, что max(a,b)=a*f(c)+b*f(-c)
Так мы можем сравнить два числа, не прибегая к логическому сравнению.
Конечно, данный алгоритм реализуем при условии наличия встроенной функции сигнум (она присутствует даже в старом Бейсике ). Но даже если такой встроенной функции нет, ее написание не составит большого труда.
program test;
var
n,k,m:integer;
begin
repeat
Writeln('*** очередной проход по циклу REPEAT');
Write('Введите натуральное число n: ');
Readln(n);
Writeln('*** введено ',n)
until n>0;
Writeln('*** вышли из REPEAT по условию ',n,' > 0 = ',n>0);
m:=n;
k:=10;
Writeln('*** m=',m,', k=',k);
Writeln ('*** проверка входа в цикл WHILE с условием ',m,' div 10<>0 = ',
m div 10<>0);
while m div 10<>0 do begin
Writeln ('*** проход по циклу WHILE с условием ',m,' div 10<>0 = ',
m div 10<>0);
k:=k*10;
m:=m div 10;
Writeln('*** m=',m,', k=',k);
end;
Writeln('*** Цикл WHILE завершен');
m:=(2*k+n)*10+2;
Writeln('Число с двойками = ',m);
end.