Не работает простейший алгоритм

157
22 апреля 2022, 09:20

Есть простейший алгоритм на c++, который заполняет и выводит двухмерный динамический массив числами от 1 до n*m, но не работает с некоторыми входными данными. проверял с значениями 12 34, 12 4, 5 8, 5, 9 - не работает, просто ничего не выводит. Пытался повторно ввести 5, 9, заработало, но с ошибкой:

Помогите найти ошибку

#include <iostream>

using namespace std;
int main() {
    int n, m;
    cin >> n >> m;
    int** matr = new int* [n];
    for (int i = 0; i < m; i++)
    {
        matr[i] = new int[m];
    }
    int k = 1;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            matr[i][j] = k;
            k++;
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << matr[i][j]<< " ";
            
        }
        cout << endl;
    }
    
    
}
Answer 1
int** matr = new int* [n];

Если уж вы выделили указатели для n строк

for (int i = 0; i < m; i++)  

то почему выделяете память для m из них? :)

{
    matr[i] = new int[m];
}

Так что не работает не алгоритм...

READ ALSO
Как в конструкторе класса инициализировать поле класса, являющееся объектом и созданное на стеке?

Как в конструкторе класса инициализировать поле класса, являющееся объектом и созданное на стеке?

Как в конструкторе класса инициализировать поле класса, являющееся объектом класса и созданное на стеке? Следующий код вызывает ошибку

97
Алгоритм Флойда,вывод матрицы расстояний

Алгоритм Флойда,вывод матрицы расстояний

Реализовал алгоритм Флойда, но задался вопросом,как сделать помимо вывода матрицы кратчайших путей, ещё и вывод матрицы расстояний, который...

110
Как работают модули из c++20?

Как работают модули из c++20?

Решил таки посмотреть, какие изменения были введены в 20-ом стандарде и одно из первых изменений поставило меня в тупик: модулиЯ долго пытался...

145