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;
}
Вывод



Ответы (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;
}