Обмен значениями двух переменных без использования временной переменной

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Обмен значениями двух переменных означает, что их значения должны быть поменяны местами, то есть исходное значение первой переменной должно стать тем, что раньше было второй переменной, и наоборот. В этом практическом занятии мы узнаем два способа обмена значениями двух переменных без использования третьей переменной:


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/FunctionsGroup(["Functions"]) cpp(("C++")) -.-> cpp/AdvancedConceptsGroup(["Advanced Concepts"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp/BasicsGroup -.-> cpp/variables("Variables") cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/FunctionsGroup -.-> cpp/function_parameters("Function Parameters") cpp/AdvancedConceptsGroup -.-> cpp/references("References") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/variables -.-> lab-96217{{"Обмен значениями двух переменных без использования временной переменной"}} cpp/operators -.-> lab-96217{{"Обмен значениями двух переменных без использования временной переменной"}} cpp/function_parameters -.-> lab-96217{{"Обмен значениями двух переменных без использования временной переменной"}} cpp/references -.-> lab-96217{{"Обмен значениями двух переменных без использования временной переменной"}} cpp/output -.-> lab-96217{{"Обмен значениями двух переменных без использования временной переменной"}} cpp/user_input -.-> lab-96217{{"Обмен значениями двух переменных без использования временной переменной"}} cpp/files -.-> lab-96217{{"Обмен значениями двух переменных без использования временной переменной"}} cpp/code_formatting -.-> lab-96217{{"Обмен значениями двух переменных без использования временной переменной"}} end

Создайте новый файл на C++

Откройте терминал и перейдите в директорию проекта с помощью команды:

cd ~/project

Создайте новый файл на C++, названный swap.cpp, с помощью команды:

touch swap.cpp

Откройте swap.cpp в предпочитаемом редакторе кода.

Напишите код для обмена значениями двух переменных с использованием операторов + и -

В этом шаге мы напишем код для обмена значениями двух переменных с использованием операторов + и -. Код должен принимать от пользователя два числа и менять их местами без использования третьей переменной.

// swap.cpp
#include <iostream>
using namespace std;

void swap_numbers(int &x, int &y) {
    x = x + y;
    y = x - y;
    x = x - y;
}

int main() {
    int a, b;
    cout << "Enter the value of a: ";
    cin >> a;
    cout << "Enter the value of b: ";
    cin >> b;

    cout << "Before swapping: " << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    swap_numbers(a, b);

    cout << "After swapping: " << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    return 0;
}

В этом коде мы создали функцию swap_numbers, которая принимает два целых аргумента и выполняет операцию обмена. Мы запрашиваем у пользователя два числа a и b и вызываем функцию swap_numbers, которая меняет их значения. Наконец, мы выводим переставленные значения a и b.

Для запуска программы используйте команду:

g++ swap.cpp -o swap &&./swap

Напишите код для обмена значениями двух переменных с использованием операторов * и /

В этом шаге мы напишем код для обмена значениями двух переменных с использованием операторов * и /. Код должен принимать от пользователя два числа и менять их местами без использования третьей переменной.

// swap.cpp
#include <iostream>
using namespace std;

void swap_numbers(int &x, int &y) {
    x = x * y;
    y = x / y;
    x = x / y;
}

int main() {
    int a, b;
    cout << "Enter the value of a: ";
    cin >> a;
    cout << "Enter the value of b: ";
    cin >> b;

    cout << "Before swapping: " << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    swap_numbers(a, b);

    cout << "After swapping: " << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    return 0;
 }

В этом коде также мы создали функцию swap_numbers, которая принимает два целых аргумента и выполняет операцию обмена. Мы запрашиваем у пользователя два числа a и b и вызываем функцию swap_numbers, которая меняет их значения. Наконец, мы выводим переставленные значения a и b. В этом методе обмена мы используем операции умножения и деления вместо сложения и вычитания.

Для запуска программы используйте команду:

g++ swap.cpp -o swap &&./swap

Финальный код программы

Вот полный код программы swap.cpp, которая меняет местами два числа как методом сложения-вычитания, так и методом умножения-деления.

// swap.cpp
#include <iostream>
using namespace std;

void add_subtract_swap(int &x, int &y) {
    x = x + y;
    y = x - y;
    x = x - y;
}

void multiply_divide_swap(int &x, int &y) {
    x = x * y;
    y = x / y;
    x = x / y;
}

int main() {
    int a, b;
    cout << "Enter the value of a: ";
    cin >> a;
    cout << "Enter the value of b: ";
    cin >> b;

    cout << "Before swapping: " << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    add_subtract_swap(a, b);

    cout << "After swapping using + and - operators: " << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    multiply_divide_swap(a, b);

    cout << "After swapping using * and / operators: " << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    return 0;
}

Компиляция и запуск

Для компиляции и запуска программы используйте команду:

g++ swap.cpp -o swap &&./swap

Программа запросит у пользователя два числа, которые она поменяет местами как методом сложения-вычитания, так и методом умножения-деления. Вывод покажет исходные значения a и b, значения, поменявшиеся местами с использованием сложения-вычитания, и значения, поменявшиеся местами с использованием умножения-деления.

Резюме

Обмен значениями является важной операцией в программировании и часто требуется в многих алгоритмах. В этом практическом занятии мы узнали два способа обмена значениями двух переменных без использования третьей переменной: с использованием сложения и вычитания, а также с использованием умножения и деления. Мы также узнали, как создавать функции для выполнения операции обмена значениями, что делает наш код более модульным и легким для чтения.