Затруднение с рандомом в динамическом массивом
Написал функцию, которая необходима для реализации динамического двухмерного массива с рандомным значением элементов. Однако компиллятор возвращает меня на место: error C2109: для индекса требуется массив или указатель (в строках, где тело вложенного цикла с rand(). Помогите, пожалуйста, с этой небольшой..как я думаю, проблемой.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream>
using namespace std;
int *get_matrix_rand(int size, int size2)
{
int i, j;
int* a = (int*)malloc(size * size2 * sizeof(int));
for (i = 0; i < size; i++) // цикл по строкам
{
for (j = 0; j < size2; j++) // цикл по столбцам
{
a[i][j] = rand() % 100;
printf("a[%i][%j] = %d ", i, j, a[i][j]);
printf("\n");
}
}
return a;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
int **get_matrix_rand(int size, int size2)
{
int** a = malloc(size*sizeof(int*));
for(int i = 0; i<size; i++)
{
a[i] = malloc(size2*sizeof(int));
for(int j = 0; j<size2; j++) // ???? ?? ????????
{
a[i][j] = rand() % 100;
printf("a[%d][%d] = %d\n", i, j, a[i][j]);
}
}
return a;
}
Только еще: если у вас С - то о каком
#include <fstream>
using namespace std;
вы говорите?! И - в С (подчеркиваю: в С, не С++) вот это приведение int*
(int*)malloc
не требуется.
И - потом не забудьте освободить память в обратном порядке. Сначала все a[i], потом a.