Pawn.Offic3r
Ученик
Здравия желаю, г-да и дамы. В этом уроке я приведу несколько простых примеров, как поменять местами значения между двумя переменными.
(Совет: желательно вспомнить математику за 5 класс)
Сразу укажу на два, очевидных для новичков, но неправильных примера:
Пример 1.
Но заменив действия на противоположенные (!), вот что мы увидим:
Пример 2.
Однако (!), если мы попробуем заменить действия на противоположенные, у нас ничего не получится.
Пример 3 (Pa4enka)
Пример 4 (SooBad)
Если есть еще способы - пишите, добавлю.
Спасибо за внимание.
(Совет: желательно вспомнить математику за 5 класс)
Сразу укажу на два, очевидных для новичков, но неправильных примера:
Код:
main()
{
new
a = 5,
b = 7;
// Способ 1.
printf("[Исходные данные] a = %d, b = %d", a, b);
printf("[Итоговые данные] a = %d, b = %d", a = b, b = a);
// Мы получим: a = 5, b = 5;
a = 5;
b = 7;
// Способ 2.
a = b;
b = a;
printf("[Исходные данные] a = %d, b = %d", a, b);
printf("[Итоговые данные] a = %d, b = %d", a, b);
// Итог: a = 7, b = 7.
}
Код:
// Формула 1
a = a + b - (b = a)
// Упрощая:
a = a + b;
b = a - b;
a = a - b;
// Проверим на практике.
main()
{
new
a = 5,
b = 7;
printf("[Исходные данные] a = %d, b = %d", a, b);
printf("[Итоговые данные] a = %d, b = %d", a + b - (b = a), b);
// Итог: a = 7, b = 5.
}
Код:
main()
{
new
a = 5,
b = 7;
printf("[Исходные данные] a = %d, b = %d", a, b);
printf("[Итоговые данные] a = %d, b = %d", a - b + (b = a), b);
// Итог: не получилось, т.к. a = 3, b = 5.
}
Код:
// Формула 2.
a * b / (b = a)
// Упрощая:
a = a * b;
b = a / b;
a = a / b;
// Проверим на практике.
main()
{
new
a = 5,
b = 7;
printf("[Исходные данные] a = %d, b = %d", a, b);
printf("[Итоговые данные] a = %d, b = %d", a * b / (b = a), b);
// Итог: a = 7, b = 5.
}
Код:
main()
{
new
a = 5,
b = 7;
printf("[Исходные данные] a = %d, b = %d", a, b);
printf("[Итоговые данные] a = %d, b = %d", a / b * (b = a), b);
// В итоге мы получим не то, чего хотели: a = 0, b = 5;
}
Код:
// Формула 3.
a ^= b;
b ^= a;
a ^= b;
// Проверим на практике
main()
{
new
a = 5,
b = 7;
printf("[Исходные данные] a = %d, b = %d", a, b);
a ^= b;
b ^= a;
a ^= b;
printf("[Итоговые данные] a = %d, b = %d", a, b);
}
Код:
stock swap(&var1, &var2)
{
#emit lref.s.pri var1
#emit lref.s.alt var2
#emit sref.s.pri var2
#emit sref.s.alt var1
}
// Проверим на практике
main()
{
new
a = 5,
b = 7;
printf("[Исходные данные] a = %d, b = %d", a, b);
swap(a, b);
printf("[Итоговые данные] a = %d, b = %d", a, b);
}
Спасибо за внимание.
Последнее редактирование:
