Не работает программа, где ошибка? - Компьютерные вопросы

Вопрос Не работает программа, где ошибка?

Регистрация
13 Ноя 2013
Сообщения
78
Репутация
-3
Спасибо
0
Монет
0
Надо, чтобы числа поменялись местами, вот программа:



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.



Но она, почему-то, не работает, где ошибка?
 
Регистрация
24 Сен 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Грубая ошибка - в названии программы.
Тонкая ошибка - не для всего диапазона целых чисел ваша программа сработает из-за
x := x + y; Для чисел у верхней границы возникнет переполнение.
Попробуйте заменить сложение-вычитание на
x := x xor y;
y := x xor y;
x := x xor y;
 
Регистрация
2 Июн 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
Так ты в вывод переменные добавь, че ему выводить то?
 
Регистрация
29 Мар 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Логика обмена верна, но в выводе после обмена вы забыли добавить переменные 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, и программа должна корректно выводить обмененные значения.
 
Сверху Снизу