Заполнение динамического двумерного массива случайными числами
Помогите.Что нужно изменить,чтобы программа заработала?
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include "math.h"
#include <fstream>
using namespace std;
int** sozdanie(int **matr,int n, int m)
{
// Создаем матрицу введенной размерности
matr = new int *[n]; // через массив указателей
for (int i = 0; i < n; i++) {
matr[i] = new int[m];
}
return matr;
}
//------------Генерация случайных значений--------------------------
int** RndDArray(int **matr, int n,int m, int a, int b){
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
matr[i][j] = a + rand() % (b - a + 1);
return matr;
}
int main() {
setlocale(LC_ALL, "Russian");
int n=8, m=8,a=1,b=10;//n и m – количество строк и столбцов матрицы
int **matr; //указатель для массива указателей
matr = new int *[n]; //выделение динамической памяти под массив указателей
for (int i = 0; i<n; i++)
matr[i] = new int[m]; //выделение динамической памяти для массива значений
sozdanie(matr,n, m);
RndDArray(matr, n, m, a, b);
cout << endl;
cout << "Заполнение массива случайными числами" << endl;
cout << matr<< " " << endl;
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Денис Пантюшев
→ Ссылка
sozdanie(matr,n, m); лишняя? Вы чуть выше выделяете память.
Заполняете правильно,
cout << matr<< " " << endl; - неправильно. Выводится адрес. Снова пройдитесь по массиву так-же, как заполняете.