Напишите программу, разделенную на функции с параметрами, которая будет загружать динамический массив целых чисел, пока пользователь не введет число 0. Сначала предположим, что массив будет содержать только 5 таких чисел. Если пользователь пытается ввести больше чисел, чем может сохранить таблица, программа должна обнаружить эту ситуацию и увеличить ее размер еще на 5 элементов. Программа должна повторять шаги, описанные в предыдущем предложении, всякий раз, когда таблица заканчивается в таблице и до тех пор, пока пользователь не закончит ввод чисел. Ведь программа должна вывести содержимое таблицы на экран и освободить выделенную память.
void fill_array(int *);
void print_array(int *, int);
void *add_memory(int);
int main()
{
int x;
int *array_pointer = (int*)calloc(5,sizeof(int));
if(array_pointer)
{
fill_array(array_pointer);
x = sizeof(array_pointer)/sizeof(array_pointer[0]);
print_array(array_pointer, x);
}
return 0;
}
void fill_array(int *array)
{
int i = 0, k = 5;
printf("Please fill an array with at least 5 digits: ");
while(scanf("%d", &array[i]) != 0)
{
if(i > 5)
{
k++;
array = (int*)add_memory(k);
}
i++;
}
}
void *add_memory(int a)
{
void *array_ptr = realloc(array_ptr,a*sizeof(int));
return array_ptr;
}
void print_array(int *array, int b)
{
int i;
for(i=0;i< b;i++)
printf("%d ",array[i]);
puts("");
}