Главная » Статьи » Задачи по программированию |
Поменять значения переменных 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;Разобраться в ней не так уж сложно. | |
Просмотров: 3088
| Теги: |
Всего комментариев: 0 | |