@avion123678

Динамический массив в с++ (CLion)?

Почему 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, а не мусор?
  • Вопрос задан
  • 343 просмотра
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Как сделать, чтобы в случаи выхода за пределы треугольной матрицы, выходили 0, а не мусор?

заранее записать туда 0. Или не выходить за пределы массива.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы