Zdravím,
Do školy potrebujem urobiť určitu funkciu ktorú už mám hotovú (jej určenie a fungovanie je nepodstatné) a funguje sáma o sebe ak spravím výpis priamo v nej tak je výpis správny. Problém nastáva ak je riadne zavolana z iného miesta (main) v tedy je výpis uplne zvlaštný až náhodny.
int special_numbers(const int input_array[], const int array_size, int result_array[]){
int totally = 0;
for (int i = 0; i < array_size; ++i)
{
int temp_sum = 0;
for (int x = i+1; x < array_size; ++x)
temp_sum += input_array[x];
if(temp_sum < input_array[i]){
result_array[i] = input_array[i];
printf("Súčet %d je menší ako %d = (JE ŠPECIALNE) [ %d ] \n", temp_sum, input_array[i], result_array[i]); //Tento výpis je správny
totally ++;
}
}
return totally;
}
Výpis funkcie je:
Volanie (v main):
int input_array[] = {16,17,4,3,5,2};
int result_array[6];
int count = special_numbers(input_array, 6, test_array);
for(int i = 0; i < count; i++){
printf("%d ", test_array[i]);
}
výsledok printu je napríklad: 0 17 993648864.
Ale má byť: 17 5 2
Pritom hore printf priamo vo funkcií ukazuje v poslednej časti výpis .."[ %d ] \n', ..., result_array); správne. Ako to opraviť? Podmienka je že nesmú byť použité globalne premenné.
Ďakujem.