Существуют различные алгоритмы обмена значениями между двумя ячейками 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.
1.
var a,b,c:integer;
begin
a:=3; b:=5;
writeln('a = ',a,' b = ',b);
c:=a;
a:=b;
b:=c;
writeln('a = ',a,' b = ',b);
end.
Результат:
a = 3 b = 5
a = 5 b = 3
2.
var a,b:integer;
begin
a:=3; b:=5;
writeln('a = ',a,' b = ',b);
a:=a+b;
b:=a-b;
a:=a-b;
writeln('a = ',a,' b = ',b);
end.
Результат:
a = 3 b = 5
a = 5 b = 3