Почему CLion выводит мусор, а не нули, в случае выхода за пределы массива?
Условие моей задачиНаписать набор функций (create - заполнение массива, access - получение элемента по выбранным индексам, destroy - удаление динамического массива), обслуживающих матрицы, возможно ненулевые элементы которых лежат не ниже побочной диагонали. Порядок матрицы определяется во время выполнения программы.
Так я попытался задачу решить:
#include <iostream>
#include <cstdlib>
#include <random>
using namespace std;
void create(int **p_arr, int m, int n) {
mt19937 gen(time(0));
uniform_int_distribution<> uid(0, 20);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n - i; j++) {
p_arr[i][j] = uid(gen);
if (p_arr[i][j] / 10 == 0) {
cout << 0 << p_arr[i][j] << " ";
}
else {
cout << p_arr[i][j] << " ";
}
}
cout << endl;
}
}
void access(int **p_arr, int x, int y) {
cout << p_arr[x][y];
}
void destroy(int **p_arr, int m, int n) {
for (int k = 0; k < m; k++) {
delete [] p_arr[n - 1 - k];
}
delete [] p_arr;
}
int main() {
int m = 6, n = 6, x, y;
int **p_arr = new int *[m];
for (int k = 0; k < m; k++) {
if (n - 1 - k >= 0) {
p_arr[k] = new int[n - 1 - k];
}
}
create(p_arr, m, n);
cout << "x: ";
cin >> x;
cout << "y: ";
cin >> y;
access(p_arr, x, y);
destroy(p_arr, m, n);
return 0;
}
Как сделать чтобы в случае выхода за пределы треугольной матрицы выводилось 0, а не мусор?