Имеется такой код:
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
#include <locale.h>
int fill_array(int array[], int l_gen, int u_gen, int size)
{
int sum=0;
for(int i=0; i<size; i++)
{
array[i]=l_gen+rand()%(u_gen-l_gen+1);
sum+=array[i];
}
return sum;
}
void print_array(int array[], int size)
{
for(int i=0; i<size; i++)
{
printf("%d ", array[i]);
}
}
int main(void)
{
setlocale(LC_ALL, "Russian");
srand(time(NULL));
printf("Введите через пробел нижнюю границу генерации, верхнюю и размер массивов: ");
int l_gen, u_gen, size, sum_max=INT_MIN+1, position;
scanf("%d %d %d", &l_gen, &u_gen, &size);
int array[size], big_array[size];
for(int i=0, current_sum; i<10; i++)
{
current_sum=fill_array(array,l_gen,u_gen,size);
printf("Сумма массива под номером %d равна %d\n", i+1,current_sum);
if(current_sum>sum_max)
{
sum_max=current_sum;
for(int j=0; j<size; j++)
{
big_array[j]=array[j];
}
position=i+1;
}
}
printf("Массив под номером %d имеет самую наибольшую сумму (%d) из всех созданных\n", position, sum_max);
print_array(big_array, size);
}
Инициализация ГПСЧ через srand в функции main приводит к правильной работе программы. Если инициализировать ГПСЧ в fill_array, происходит ошибка. Кто сможет разъяснить, с чем это связано? Пример неправильного вывода:
Сумма массива под номером 2 равна 73
Сумма массива под номером 3 равна 73
Сумма массива под номером 4 равна 73
Сумма массива под номером 5 равна 73
Сумма массива под номером 6 равна 73
Сумма массива под номером 7 равна 73
Сумма массива под номером 8 равна 73
Сумма массива под номером 9 равна 73
Сумма массива под номером 10 равна 76