Дана задача: написать программу сложения двух матриц с использованием функций 1. генерации матрицы, 2. вывода на экран, 3. сложение матриц
Я написала эту программу, но матрицы не складываются, не могу понять почему
код:
#include <iostream>
using namespace std;
int n, m;
void CreateMatrix(int **a)
{
for (int i = 0; i < n; i++)
{
a[i] = new int[m];
for (int j = 0; j < m; j++)
a[i][j] = rand() % 100;
}
}
void PrintMatrix(int **a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout.width(8);
cout << a[i][j] << ' ';
}
cout << endl << endl;
}
}
void matrix_sum(int **a, int **b, int **sum)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
sum[i][j] = a[i][j] + b[i][j];
cout.width(8);
cout << sum[i][j] << ' ';
}
cout << endl << endl;
}
}
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Введите количество строк матриц" << endl;
cin >> n;
cout << "Введите кол столбцов матриц " << endl;
cin >> m;
int **MatrixA = new int *[n];
CreateMatrix(MatrixA);
cout << "Матрица А: " << endl << endl;
cout.precision(3);
PrintMatrix(MatrixA, n, m);
int **MatrixB = new int *[n];
CreateMatrix(MatrixB);
cout << "Матрица B: " << endl << endl;
cout.precision(3);
PrintMatrix(MatrixB, n, m);
cout << "Результат сложения матриц А и В: " << endl;
int **sum = new int *[n];
matrix_sum(MatrixA, MatrixB, sum);
cout << endl;
system("Pause");
for (int i = 0; i < n; i++)
{
delete[] MatrixA[i];
}
delete[] MatrixA;
for (int i = 0; i < n; i++)
{
delete[] MatrixB[i];
}
delete[] MatrixB;
return 0;
}
C/C++
Программа выдает ошибку c++
Нужно выделять память для матрицы sum:
#include <iostream>
#include <ctime>
using namespace std;
int n, m;
void CreateMatrix(int **a)
{
for (int i = 0; i < n; i++)
{
a[i] = new int[m];
for (int j = 0; j < m; j++)
a[i][j] = rand() % 100;
}
}
void PrintMatrix(int **a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout.width(8);
cout << a[i][j] << ' ';
}
cout << endl << endl;
}
}
void matrix_sum(int **a, int **b, int **sum)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
sum[i][j] = a[i][j] + b[i][j];
cout.width(8);
cout << sum[i][j] << ' ';
}
cout << endl << endl;
}
}
int main()
{
srand(time(NULL));
setlocale(LC_ALL, "Russian");
cout << "Введите количество строк матриц" << endl;
cin >> n;
cout << "Введите кол столбцов матриц " << endl;
cin >> m;
int **MatrixA = new int *[n];
CreateMatrix(MatrixA);
cout << "Матрица А: " << endl << endl;
cout.precision(3);
PrintMatrix(MatrixA, n, m);
int **MatrixB = new int *[n];
CreateMatrix(MatrixB);
cout << "Матрица B: " << endl << endl;
cout.precision(3);
PrintMatrix(MatrixB, n, m);
cout << "Результат сложения матриц А и В: " << endl;
int **sum = new int *[n];
CreateMatrix(sum);
matrix_sum(MatrixA, MatrixB, sum);
cout << endl;
system("Pause");
for (int i = 0; i < n; i++)
{
delete[] sum[i];
}
delete[] sum;
for (int i = 0; i < n; i++)
{
delete[] MatrixA[i];
}
delete[] MatrixA;
for (int i = 0; i < n; i++)
{
delete[] MatrixB[i];
}
delete[] MatrixB;
return 0;
}
#include <iostream>
#include <ctime>
using namespace std;
int n, m;
void CreateMatrix(int **a)
{
for (int i = 0; i < n; i++)
{
a[i] = new int[m];
for (int j = 0; j < m; j++)
a[i][j] = rand() % 100;
}
}
void PrintMatrix(int **a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout.width(8);
cout << a[i][j] << ' ';
}
cout << endl << endl;
}
}
void matrix_sum(int **a, int **b, int **sum)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
sum[i][j] = a[i][j] + b[i][j];
cout.width(8);
cout << sum[i][j] << ' ';
}
cout << endl << endl;
}
}
int main()
{
srand(time(NULL));
setlocale(LC_ALL, "Russian");
cout << "Введите количество строк матриц" << endl;
cin >> n;
cout << "Введите кол столбцов матриц " << endl;
cin >> m;
int **MatrixA = new int *[n];
CreateMatrix(MatrixA);
cout << "Матрица А: " << endl << endl;
cout.precision(3);
PrintMatrix(MatrixA, n, m);
int **MatrixB = new int *[n];
CreateMatrix(MatrixB);
cout << "Матрица B: " << endl << endl;
cout.precision(3);
PrintMatrix(MatrixB, n, m);
cout << "Результат сложения матриц А и В: " << endl;
int **sum = new int *[n];
CreateMatrix(sum);
matrix_sum(MatrixA, MatrixB, sum);
cout << endl;
system("Pause");
for (int i = 0; i < n; i++)
{
delete[] sum[i];
}
delete[] sum;
for (int i = 0; i < n; i++)
{
delete[] MatrixA[i];
}
delete[] MatrixA;
for (int i = 0; i < n; i++)
{
delete[] MatrixB[i];
}
delete[] MatrixB;
return 0;
}
Я у Вас убрала кое-что лишнее и сомнительное, добавила вместо этого кое-что необходимое и всё сразу заработало правильно:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int n, m;
void CreateMatrix(int **a)
{
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++) a[i][j] = rand() % 100;
}
void PrintMatrix(int **a)
{
cout << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++) cout << setw(4) << a[i][j];
cout << endl;
}
cout << endl;
}
void sum(int **a, int **b, int **c)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
c[i][j] = a[i][j] + b[i][j];
}
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Введите количество строк матриц: ";
cin >> n;
cout << "Введите количество столбцов матриц: ";
cin >> m;
srand(time(NULL));
int **MatrixA = new int *[n], **MatrixB = new int *[n],
**Matrix_Sum = new int *[n];
for (int i = 0; i < n; i++)
{
MatrixA[i] = new int [m];
MatrixB[i] = new int [m];
Matrix_Sum[i] = new int [m];
}
CreateMatrix(MatrixA);
cout << "\nМатрица А: " << endl;
PrintMatrix(MatrixA);
CreateMatrix(MatrixB);
cout << "Матрица B: " << endl;
PrintMatrix(MatrixB);
sum(MatrixA, MatrixB, Matrix_Sum);
cout << "Результат сложения матриц А и В: " << endl;
PrintMatrix(Matrix_Sum);
cout << endl;
system("pause > nul");
return 0;
}

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int n, m;
void CreateMatrix(int **a)
{
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++) a[i][j] = rand() % 100;
}
void PrintMatrix(int **a)
{
cout << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++) cout << setw(4) << a[i][j];
cout << endl;
}
cout << endl;
}
void sum(int **a, int **b, int **c)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
c[i][j] = a[i][j] + b[i][j];
}
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Введите количество строк матриц: ";
cin >> n;
cout << "Введите количество столбцов матриц: ";
cin >> m;
srand(time(NULL));
int **MatrixA = new int *[n], **MatrixB = new int *[n],
**Matrix_Sum = new int *[n];
for (int i = 0; i < n; i++)
{
MatrixA[i] = new int [m];
MatrixB[i] = new int [m];
Matrix_Sum[i] = new int [m];
}
CreateMatrix(MatrixA);
cout << "\nМатрица А: " << endl;
PrintMatrix(MatrixA);
CreateMatrix(MatrixB);
cout << "Матрица B: " << endl;
PrintMatrix(MatrixB);
sum(MatrixA, MatrixB, Matrix_Sum);
cout << "Результат сложения матриц А и В: " << endl;
PrintMatrix(Matrix_Sum);
cout << endl;
system("pause > nul");
return 0;
}

Похожие вопросы
- Си. Программа выдаёт ошибку
- Dev C++. Выдаёт ошибки( Помогите, пожадуйста, исправить
- Выдаёт ошибку в коде.Помогите
- Как защитить программу написанную на C++ ?
- Нужен готовый код по C++ рабочий без ошибок C++
- Помогите пожалуйста написать программу небольшую в C++. Одномерный массив
- Набрать текст программы на языке (C++) реализующий уравнение
- Здравствуйте, помогите пожалуйста написать программы на языке C++.
- Нужно написать программу на языке C++
- Помогите решить ошибку c++, Смотри внутри.