Как из функции 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;
}
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());
сделай А и Б возвращающими 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;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Что такое Array of Structure, Structure of Array, Structure of Structure ? Когда использовать?