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:
Citace
Súčet 14 je menší ako 17 = (JE ŠPECIALNE) [ 17 ]
Súčet 2 je menší ako 5 = (JE ŠPECIALNE) [ 5 ]
Súčet 0 je menší ako 2 = (JE ŠPECIALNE) [ 2 ]
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é.
Dotaz
ThomaSM 1
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.
Link to comment
Share on other sites
8 odpovědí na tuto otázku
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now