Ошибка при работе с массивом
Двумерный динамический массив в функцию Копирование + добавить строку и столбец видает ошибку.
#include<iostream>
#include<ctime>
using namespace std;
//8.Создать функцию, позволяющую вставлять строку (столбец) в матрицу.
void Print_mas(int** arr, int rows, int cols)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
cout << arr[i][j] << "\t";
}
cout << endl;
}
}
void Load_mass(int**& arr, int rows, int cols)
{
arr = new int* [rows];
for (int i = 0; i < rows; i++)
{
arr[i] = new int[cols];
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
arr[i][j] = rand() % 49;
}
}
}
void Load_mass_2v(int**& arr, int rows, int cols, int rw, int cl)
{
for (int i = rows; i < rows + rw; i++)
{
for (int j = cols; j < cols + cl; j++)
{
arr[i][j] = rand() % 49;
}
}
}
void Insert_rows_into_an_array(int**& arr, int**& arr2, int rows, int cols, int rw, int cl)
{
arr2 = new int* [rows];
for (int i = 0; i < rows; i++)
{
arr2[i] = new int[cols];
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
arr2[i][j] = arr[i][j];
}
}
cout << "++++++++++++++++++++++++++++++++++++++++++++++" << endl;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
cout << arr2[i][j] << "\t";
}
cout << endl;
}
for (int i = 0; i < rows; i++)
{
delete[]arr[i];
}
delete[]arr;
arr = NULL;
rows += rw;
cols += cl;
arr = new int* [rows];
for (int i = 0; i < rows; i++)
{
arr[i] = new int[cols];
}
int* px = new int;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
arr[i][j] = 0;
}
cout << endl;
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (j >= rows - rw && i >= cols - cl)
arr[i][j] = 1;
else
arr[i][j] = arr2[i][j];///arr2 есть елемент 0x00000000fdfdfdfd <Чтение памяти невозможно>
}
}
for (int i = 0; i < rows-rw; i++)
{
delete[]arr2[i];
}
delete[]arr2;
}
int main()
{
setlocale(LC_ALL, "rus");
srand(time(0));
int rows = 5;
int cols = 5;
cout << "Введите Матрицу (Строки и Колонки): ";
cin >> rows >> cols;
int** arr;
int** arr2;
Load_mass(arr, rows, cols);
cout << "\nmain 1________________________________________________________\n" << endl;
Print_mas(arr, rows, cols);
int r, c;
cout << "Добавить Строки и Колонки: ";
cin >> r >> c;
cout << endl;
Insert_rows_into_an_array(arr, arr2, rows, cols, r, c);
cout << endl;
cout << "\n________________________________________________________\n" << endl;
Load_mass_2v(arr, rows, cols, r, c);
Print_mas(arr, rows + r, cols + c);
cout << "\n________________________________________________________\n" << endl;
for (int i = 0; i < rows + r; i++)
{
delete[]arr[i];
}
delete[]arr;
system("pause");
return 0;
}