c++ Как обменять значениями две переменных
Нужно написать программу, которая считывает значения двух целочисленных переменных a и b , затем меняет их значения местами (то есть в переменной a должно быть записано то, что раньше хранилось в b , а в переменной b записано то, что раньше хранилось в a ). Затем вывести значения переменных. Не знаю как обменять переменные значениями, символ = не помогает:
a = b; b = a;
- Фактически тоже самое можно сделать и в C++, заключив левую и правую часть в список аргументов пары функций. – Vlad from Moscow
- Можно было и без переменной, через xor. – BOPOH
Если вы знаете альтернативный способ — пожалуйста, напишите ответ, по возможности снабдив его объяснением того, как и почему возможно такое решение.
Отслеживать
33.9k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака
задан 6 авг 2015 в 8:28
werfghjkml werfghjkml
137 1 1 золотой знак 3 3 серебряных знака 11 11 бронзовых знаков
Я голосую за закрытие этого вопроса как не соответствующего теме, потому что наряду с работой за автора это полнейшая профанация и нежелание что-то делать самому
6 авг 2015 в 8:29
Конечно не помогает, вам нужен обмен значений переменных, а не присвоение a=b.
6 авг 2015 в 8:30
В python может такое работать: a, b = b, a
6 авг 2015 в 8:33
Вопрос может быть и туп, но я только начал читать про c++. В интернете не нашел ответ на свои вопрос.
6 авг 2015 в 9:33
@werfghjkml: всё нормально, на мелочах мир держится. Вы, главное, учитесь и продолжайте вопросы задавать. И постарайтесь, пожалуйста, в следующие вопросы добавить свой код, которым вы пытались решить задачу.
6 авг 2015 в 23:30
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Можно, например, использовать дополнительную переменную, чтобы обменять значения двух других переменных. Это уже реализовано в стандарте языка C++ функцией std::swap
Но, как я понимаю, вам надо написать соответствующий код самостоятельно.
Программа может выглядеть следующим образом
#include int main() < int a, b; std::cout > a >> b ) < std::cout else < std::cout >
Вывод программы на консоль:
Enter two values: 10 20 The original values: a = 10, b = 20 After swapping: a = 20, b = 10
EDIT: Я в своем комментарии к вопросу как раз имел в виду
std::tie( a, b ) = std::make_pair( b, a );
Другие способы — это, как я уже написал, использование другой стандартной функции
std::swap( a, b );
Или можно еще использовать новую функцию std::exchange
Вот демонстрационная программа, которая показывает использование этих стандартных функций
#include #include #include int main() < int a = 10, b = 20; std::cout )" data-controller="se-share-sheet" data-se-share-sheet-title="Поделиться ссылкой на ответ" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter " data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Поделиться)" title="">Улучшить ответ)">изменён 8 авг 2015 в 11:21ответ дан 6 авг 2015 в 8:36 Vlad from MoscowVlad from Moscow44.8k3 золотых знака38 серебряных знаков89 бронзовых знаков