C++ rand() выдает одинаковые числа

Я не могу найти в коде ошибку

int main()
{
    int N = 0;
    cin >> N;
    int* matrix = new int[N , N + 1];
    srand(time(NULL));
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N +1; j++)
        {
            matrix[i, j] = rand() % 10;
        }
    }
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N+1; j++)
        {
            cout << matrix[i, j] << " ";
        }
        cout << endl;
    }
    delete[] matrix;
    system("pause");
    return 0;
}

Вывод 123


Ответы (1 шт):

Автор решения: Harry

int* matrix = new int[N , N + 1]; — вот здесь. И здесь: matrix[i, j] = rand() % 10; И еще...

Словом, двумерная матрица — это [][]. А то, что написали вы — оператор запятая, т.е. в данном контексте по сути просто второе значение, которое после запятой...

Вот и выходит, что вы все время работаете с одномерным масивом.

int main()
{
    int N = 0;
    cin >> N;
    int** matrix = new int*[N];
    for(int i = 0; i < N; ++i) matrix[i] = new int[N + 1];
    srand(time(NULL));
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N +1; j++)
        {
            matrix[i][j] = rand() % 10;
        }
    }
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N+1; j++)
        {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    for(int i = 0; i < N; ++i)
        delete[] matrix[i];
    delete[] matrix;
}
→ Ссылка