Главная » Статьи » Задачи по программированию

Поменять значения переменных A и B между собой [Pascal]

 Первая мысль, приходящая в голову, это написать программу, похожую на эту:

A := B;
B := A;
Естественно, это программа работать не будет (в обеих переменных будет значение B).
Теперь поищем правильное решение. Обозначим начальное значение A за A1, B за B1. Тогда необходимо, чтобы по окончании работы программы A равнялось B1, а B - A1.
0) A = A1; B = B1;
1) Занесем в переменную A результат суммирования A и B (A := A + B):
A = A1 + B1; B = B1;
2) Занесем в переменную B разность A и B (B := A - B):
A = A1 + B1; B = A1;
3) Занесем в переменную A разность A и B (A := A - B):
A = B1; B = A1;

Код программы:
A := A + B;
B := A - B;
A := A - B;
Ура!
Этого решения хватило мне, чтобы сдать эту задачу в школе на уроке, однако дома я нашел в этом алгоритме несколько слабых моментов:
1) Возможно переполнение переменных. Это зависит от настроек компилятора.
2) А что, если переменные не числовые? Например char.

Это привело меня ко второму решению: 
Для начала разберемся, что такое логическая операция xor. Вот несколько ее свойств:
1) A xor A = 0;
2) A xor B = B xor A;
3) A xor (A xor B) = B;
Их нам вполне достаточно, чтобы написать новую программу, которая меньше зависит от типа данных A и B:
Код программы:
A := A xor B;
B := A xor B;
A := A xor B;
Разобраться в ней не так уж сложно.
Категория: Задачи по программированию | Добавил: shypuk (28.02.2013)
Просмотров: 3088 | Теги: задачи, Pacala, delphi | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]