Передать значение из одной функции в другую функцию?

120
08 января 2021, 15:00

Как из функции add_matrix_A и add_matrix_B предать N и M в функцию matrix_C?

#include<iostream>
#include<Windows.h>
using namespace std;
void menu() {
    system("cls");
    cout << "\n";
    cout << "Что вы хотите сделать?\n";
    cout << "1. Ввести матрицу A\n";
    cout << "2. Ввести матрицу B\n";
    cout << "3. Вычислить матрицу C=A*B и транспонировать\n";
    cout << "4. Умножить матрицу A на k\n";
    cout << "5. Умножить на матрицу B на транспонированную C\n";
    cout << "6. Выполнить операцию k*A+B*CT\n";
    cout << "7. Выход\n";
    cout << "\n";
    cout << ">>> ";
}
void add_matrix_A() {
    system("cls");
    cout << "Ввод матрицы A:" << endl << endl;
    int i, j, N, M, a[20][20];
    cout << "Количество строк: ";
    cin >> N;
    cout << "Количество столбцов: ";
    cin >> M;
    cout << "\nВведите матрицу A:" << endl;
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            cin >> a[i][j];
        }
    }
    cout << "\nМатрица A:" << endl;
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            cout << a[i][j] << "\t";
        }
        cout << endl;
    }
}
void add_matrix_B() {
    system("cls");
    cout << "Ввод матрицы B:" << endl << endl;
    int i, j, N, M, b[20][20];
    cout << "Количество строк: ";
    cin >> N;
    cout << "Количество столбцов: ";
    cin >> M;
    cout << "\nВведите матрицу B:" << endl;
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            cin >> b[i][j];
        }
    }
    cout << "\nМатрица B:" << endl;
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            cout << b[i][j] << "\t";
        }
        cout << endl;
    }
}
void matrix_C() {
    system("cls");
    int a[20][20], b[20][20];
    cout << "Вычисление матрицы C=A*B" << endl << endl;
    int i, j, k, c[20][20];
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            c[i][j] = 0;
            for (k = 0; k < N; k++)
                c[i][j] += a[i][k] * b[k][j];
        }
        cout << "\nМатрица C:" << endl;
        for (i = 0; i < N; i++) {
            for (j = 0; j < M; j++) {
                cout << c[i][j] << "\t";
            }
            cout << endl;
        }
    }
}
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int variant, N, M;
    do
    {
        menu();
        cin >> variant;
        switch (variant)
        {
        case 1:
            add_matrix_A();
            break;
        case 2:
            add_matrix_B();
            break;
        case 3:
            matrix_C();
        }
        if (variant != 7) {
            system("pause");
        }
    } while (variant !=7);
    system("pause");
    return 0;
}
Answer 1
std::pair<int, int> add_matrix_B() {    
    //...
    int N, M;
    cin >> N >> M;
    //...
    return std::make_pair(N, M);
}
void matrix_C(const std::pair<int, int>& p) {
    //...
    int n = p.first, m = p.second;
    //...
}

можете передать и так:

matrix_C(add_matrix_B());
Answer 2

сделай А и Б возвращающими int[] и потом передай их в C по типу :

return {N,M};

main потом запиши так:

int a[] = add_matrix_A();
int b[] = add_matrix_B();
matrix_C(a[0],a[1], b[0],b[1]);

а matrix_C переделай :

void matrix_C(int a, int b, int c, int d) {
system("cls");
int a[a][b], b[c][d];
cout << "Вычисление матрицы C=A*B" << endl << endl;
int i, j, k, c[20][20];
for (i = 0; i < N; i++) {
    for (j = 0; j < N; j++) {
        c[i][j] = 0;
        for (k = 0; k < N; k++)
            c[i][j] += a[i][k] * b[k][j];
    }
    cout << "\nМатрица C:" << endl;
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            cout << c[i][j] << "\t";
        }
        cout << endl;
    }
}
READ ALSO
С++: непонятная ошибка C2244

С++: непонятная ошибка C2244

Есть класс считывания данные из файла выполненный через итератор:

100
C++ from 11 to 17

C++ from 11 to 17

При переходе данный код заголовка перестал работать

146
Что такое AOS, SOA, SOS?

Что такое AOS, SOA, SOS?

Что такое Array of Structure, Structure of Array, Structure of Structure ? Когда использовать?

135