Мне нужно создать гистограмму с двумя функциями
create_histogram: динамически распределяет размер массива
гистограмма: Функция создает гистограмму с номерами от самого низкого до самого большого. Функция должна распределять память для нашей гистограммы в диапазоне от начала до конца.
Результат нужно сохранить в ** out.
Моя проблема заключается в функции scanf. Я не знаю, как сканировать числа, данные пользователем, чтобы сохранить их в указатель на указатель (** out).
Другая проблема также освобождает память указателя на указатель, я не уверен, правильно ли я делаю.
Это моя домашняя работа, поэтому не спрашивайте меня, почему вместо одного указателя есть указатель, это не моя идея.
printf("Enter numbers:\n");
for(int i=0; i<N; i++)
{
//INPUT NUMBERS TO POINTER TO POINTER (PROBLEM)
if(scanf("%d", (tab+i)) != 1)
{
printf("Incorrect input");
free(tab);
return 1;
}
}
int **output;
int out_s;
int out_b;
histogram(tab, N, output, &out_s, &out_b);
free(tab);
//Freeing memory of pointer to pointer (PROBLEM)
for(int i=0; i<out_s; i++)
{
free(*(output+i));
}
free(output);
//Allocating the memory for histogram
out = (int **)malloc(*out_size * sizeof(int *));
for (int w=0; w<*out_size; w++)
{
*(out+w) = (int*) malloc(1 * sizeof(int));
}
//creating histogram
for(int i=*out_begin; i<*out_size; i++)
{
for(int j=0; j<*out_size; j++)
{
if(*(tab+j) == i)
{
*(out+i) = *(out+i) + 1;
}
}
}
//Free the pointer to pointer
for(int i=0; i<*out_size; i++)
{
free(*(out+i));
}
free(out);