C/C++

Помогите пожалуйста с задачей по программированию на С++.

Создать прямоугольную матрицу, размерность которой вводится с клавиатуры.
Требуется дополнить ее до квадратной. Заполнить новые элементы матрицы нулями.
Результат вывести на экран. Использовать функцию malloc.
#include <iostream>
#include <ctime>

using namespace std;

int main()
{
int n,m,max;
int ** A;
do
{
cout << "Введите количество строк: ";
cin >> n;
} while(n < 1);
do
{
cout << "Введите количество столбцов: ";
cin >> m;
} while(m < 1 || n == m);
if(n > m) max = n;
else max = m;
A = (int **) malloc(max * sizeof(int*));
for(int x = 0; x < max; x++) A[x] = (int*) malloc(max * sizeof(int));

srand(time(nullptr));
rand();
for(int x = 0; x < n; x++)
{
for(int y = 0; y < m; y++)
{
A[x][y] = rand() % 15 + 1; // заполняем случайными значениями
cout << A[x][y] << '\t';
}
cout << endl;
}
cout << endl;

// дополнение нулями
for(int x = 0; x < max; x++)
{
for(int y = 0; y < max; y++)
{
if(x > n || y > m) A[x][y] = 0;
}
}

// выводим квадратную матрицу на экран
for(int x = 0; x < max; x++)
{
for(int y = 0; y < max; y++)
cout << A[x][y] << '\t';
cout << endl;
}

if(A == (int**) nullptr) return 1;
for(int x = 0; x < max; x++)
{
if(A[x] == (int*) nullptr) return 1;
free(A[x]);
A[x] = (int*) nullptr;
}
free(A);
A = (int**) nullptr;

return 0;
}
Денис Суховенко
Денис Суховенко
94 092
Лучший ответ
Денис Суховенко Это на тот случай, если не нужно менять размер матрицы во время выполнения программы между созданием прямоугольной матрицы и дополнением нулями.

Ещё не понятно, если язык C++, то почему должна использоваться функция языка Си malloc() ?

Может, всё-таки, язык Си?