С++ динамичный массив работает странно

иногда код выводит все как надо, иногда мусор, иногда вообще ничего не печатает
По дате
По рейтингу
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
#include <iomanip>
#include <iostream>
#include <random>
using namespace std;
void linebreak() {
cout.put('\n');
}
void show_diagonal(int** const matrix, const size_t n) {
for (size_t i = 0; i < n; ++i) {
cout << setw(4) << matrix[i][i];
}
}
void show_matrix(int** const matrix, const size_t n) {
for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < n; ++j) {
cout << setw(4) << matrix[i][j];
}
linebreak();
}
linebreak();
}
void fill_random(int** matrix, const size_t n) {
uniform_int_distribution uid(10, 99);
mt19937 gen{ random_device()() };
for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < n; ++j) {
matrix[i][j] = uid(gen);
}
}
}
int main() {
cout << "Rank: ";
size_t n;
cin >> n;
linebreak();
auto matrix = new int* [n];
for (size_t i = 0; i < n; ++i) {
matrix[i] = new int[n];
for (size_t j = 0; j < n; ++j) {
matrix[i][j] = 0;
}
}
fill_random(matrix, n);
show_matrix(matrix, n);
show_diagonal(matrix, n);
for (size_t i = 0; i < n; ++i) {
delete[] matrix[i];
}
delete[] matrix;
matrix = nullptr;
}
Ты инициализируешь не двумерный массив, а два массива, каждый размерностью 10, а использовать пытаешься как двумерный.
Двумерный объявляется и инициализируется как-то так
12
int **bb = new int*[n];
for (i = 0; i < n; i++) bb[i] = new int[n]; // Каждый элемент должен быть инициализирован как одномерный массив
Бро, как долго c++ изучаешь? тоже хочу его изучать, работаешь программистом?
Больше по теме