У меня есть задание, в котором мне нужно найти три самых больших числа в массиве, функция
void find_three_largest
является частью задания, я не могу его не изменить
#include <stdio.h>
void find_three_largest(const int *a, int len_a, int *largest, int *index_largest, int *second_largest, int *second_index_largest, int *third_largest, int *third_index_largest){
*largest = *second_largest = *third_largest = a[0]-1;
for(int i=0; i< len_a; i++){
if(a[i] > *largest){
*third_largest = *second_largest;
*second_largest = *largest;
*largest = a[i];
*index_largest = i;
}
else if (a[i]> *second_largest)
{
*third_largest = *second_largest;
*second_largest = a[i];
*second_index_largest = i;
}
else if(a[i] > *third_largest){
*third_largest = a[i];
*third_index_largest = i;
}
}
}
int main(){
int arr[6] = {9,1,12,4,8,2};
int largest_1, largest_2, largest_3;
int index_1,index_2, index_3;
find_three_largest(arr, 6, &largest_1, &index_1, &largest_2, &index_2, &largest_3, &index_3);
printf("The largest is %d in the posicion %dn", largest_1, index_1);
printf("The second largest is %d in the posicion %dn", largest_2, index_2);
printf("The thir largest is %d in the posicion %dn", largest_3, index_3);
}
Сначала с другим вектором это будет работать, за исключением того, что индекс для второго по величине был неправильным, когда я попробовал фактический вектор, он бы выводил
The largest number is 12 in the posicion 2
The second largest number is 9 in the posicion 2007016368
The third largest number is 8 in the posicion 22011
Что случилось?