Существуют различные алгоритмы обмена значениями между двумя ячейками a и b.
1. Самый простой - с использованием промежуточной ячейки
var
a,b,t:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
t:=a; a:=b; b:=t; Writeln(a,' ',b)
end.
2. Обмен без использования дополнительной памяти при помощи сложения и вычитания
var
a,b:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
b:=a+b; a:=b-a; b:=b-a; Writeln(a,' ',b)
end.
3. Обмен без использования дополнительной памяти при помощи логической операции "исключающее ИЛИ"
var
a,b:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
a:=a xor b; b:=a xor b; a:=a xor b; Writeln(a,' ',b)
end.
Язык PascalABC.NET дополнительно предлагает простые способы обмена.
4. Обмен при помощи процедуры Swap
var
a,b:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
Swap(a,b); Writeln(a,' ',b)
end.
5. Обмен на основе кортежного присваивания
var
a,b:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
(a,b):=(b,a); Writeln(a,' ',b)
end.