Выражение должно иметь константное значение при объявлении двумерного массива
Универское задание: отсортировать двумерный массив 2х9, мне показалось это слишком легко и решил сделать динамическую размерность массива. Но после того как я поменял всё на динамику получил единственную ошибку "Выражение должно иметь константное значение" в строке объявления двумерного массива, в интернете решение этого не нашел. (Не исключено что плохо искал но всё же) Как это можно исправить оставив динамическую размерность массива?
#include <iostream>
#include <ctime>
using namespace std;
void coutArr(int **arr, int x, int y)
{
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
cout << arr[i][j] << "\t";//Вывод.
}
if (i == 0)
{
cout << endl;
}
}
}
void fillArr(int **arr, int x, int y)
{
srand(time(0));
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
arr[i][j] = rand() % 1000;
}
}
}
void twoDimToOne(int **arr, int **tempArr, int x, int y, int n)
{
int k = 0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 9; j++)
{
*tempArr[k] = arr[i][j];
k++;
}
}
}
void oneDimToTwo(int **arr, int **tempArr, int x, int y, int n)
{
int k = 0;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 9; j++)
{
arr[i][j] = *tempArr[k];
k++;
}
}
void Merge(int* a, int low, int high, int mid)
{
int i, j, k;
int *temp = new int[high - low + 1];
i = low;
k = 0;
j = mid + 1;
while (i <= mid && j <= high)
{
if (a[i] < a[j])
{
temp[k] = a[i];
k++;
i++;
}
else
{
temp[k] = a[j];
k++;
j++;
}
}
while (i <= mid)
{
temp[k] = a[i];
k++;
i++;
}
while (j <= high)
{
temp[k] = a[j];
k++;
j++;
}
for (i = low; i <= high; i++)
{
a[i] = temp[i - low];
}
}
void MergeSort(int** a, int low, int high)
{
int mid;
if (low < high)
{
mid = (low + high) / 2;
MergeSort(a, low, mid);
MergeSort(a, mid + 1, high);
Merge(*a, low, high, mid);
}
}
int main()
{
int x(0), y(0);
int *arr = new int[x][y];
int n = x * y;
int *tempArr = new int[n];
fillArr(&arr, x, y);
twoDimToOne(&arr, &tempArr, x, y, n);
cout << "Unsorted array: " << endl;
coutArr(&arr, x, y);
MergeSort(&tempArr, 0, n - 1);
oneDimToTwo(&arr, &tempArr, x, y, n);
cout << endl << endl << "Sorted array: " << endl;
coutArr(&arr, x ,y);
system("pause");
return 0;
}