Основная сложность задачи состоит в том, чтобы заменить значения переменных. Классический вариант замены - это ввод дополнительной переменной, куда будем временно записывать одно из чисел, чтобы не "затереть" его при присвоении.
Классический вариант:
program z;
var x,y,c:real;
begin
write('x >> ');
readln(x);
write('y >> ');
readln(y);
if x>y then
begin
c:=x; {сохранить х временно в переменную с}
x:=y; {присвоить в х новое значение из у}
y:=c; {присвоить в у значение переменной х, которое сейчас хранится в с}
end;
writeln('x=',x);
writeln('y=',y);
end.
Есть и нетривиальный вариант замены значений двух переменных, часто встречающийся в задачах олимпиадного характера, а именно, заменить значения двух переменных без ввода дополнительной переменной! И здесь используется математический фокус с числами.
Например, пусть х=6, а у=5.
Выполним первое действие: x:=x+y, то есть новое значение переменной х будет равно сумме старого значения х и у:
х=6+5=11.
Выполним второе действие: y:=х-у, то есть из нового значения переменной х вычесть значение у и запишем результат опять в у:
у=11-5=6.
Выполним третье действие: x:=x-y, то есть из нового значения переменной х вычесть новое значение у и записать результат в переменную х:
х=11-6=5.
Итак, было х=6, у=5, а стало х=5, у=6. То есть значения переменных х и у поменялись местами!
Математика "рулит"! ;-)
program z;
var x,y,c:real;
begin
write('x >> ');
readln(x);
write('y >> ');
readln(y);
if x>y then
begin
x:=x+y;
y:=x-y;
x:=x-y;
end;
writeln('x=',x);
writeln('y=',y);
end.