Тема: Транспортування динамічної матриці
Потрібно написати функцію. Я пробую, але все дуже погано, а саме з самою динамікою. Що не так у void transMatrix(int** m, int rows, int cols)?
#include <iostream>
#include <ctime>
using namespace std;
int** createMatrix(int rows, int cols);
void printMatrix(int** m, int rows, int cols);
void randMatrix(int** m, int rows, int cols);
void transMatrix(int** m, int rows, int cols);
int main()
{
int rows, cols;
cout << "Enter rows and cols: ";
cin >> rows >> cols;
int** matrix = createMatrix(rows, cols);
randMatrix(matrix, rows, cols);
cout << endl;
printMatrix(matrix, rows, cols);
transMatrix(matrix, rows, cols);
cout << endl;
printMatrix(matrix, rows, cols);
}
int** createMatrix(int rows, int cols)
{
int** m = new int* [rows];
for (int i = 0; i < rows; i++)
{
m[i] = new int [cols] {};
}
return m;
}
void printMatrix(int** m, int rows, int cols)
{
if (m == nullptr)
{
cout << "Empty matrix!" << endl;
return;
}
cout << "Matrix: " << endl;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
cout << "\t" << m[i][j];
}
cout << endl;
}
}
void randMatrix(int** m, int rows, int cols)
{
srand(time(0));
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
m[i][j] = 1 + rand() % 20;
}
}
}
void transMatrix(int** m, int rows, int cols)
{
int** res = new int* [rows];
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
res[i][j] = m[j][i];
}
cout << endl;
}
m = res;
delete[]res;
}