Логика обмена верна, но в выводе после обмена вы забыли добавить переменные x и y, чтобы показать новые значения. Вот исправленный вариант программы:
program SwapNumbers; var x, y: integer; begin write ('x= '); readln (x); write ('y= '); readln (y); x := x + y; y := x - y; x := x - y; writeln ('new x= ', x); writeln ('new y= ', y); end.
Теперь после строки writeln добавлены переменные x и y, и программа должна корректно выводить обмененные значения.
Грубая ошибка - в названии программы. Тонкая ошибка - не для всего диапазона целых чисел ваша программа сработает из-за x := x + y; Для чисел у верхней границы возникнет переполнение. Попробуйте заменить сложение-вычитание на x := x xor y; y := x xor y; x := x xor y;
program 1;
var x, y: integer;
begin
write ('x= '); readln (x);
write ('y= '); readln (y);
x:= x+y;
y:= x-y;
x:= x-y;
writeln ('new x= ');
writeln ('new y= ');
end.
Но она, почему-то, не работает, где ошибка?