Найдите три наибольших числа в массиве с помощью указателей [closed]

У меня есть задание, в котором мне нужно найти три самых больших числа в массиве, функция

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

Что случилось?

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *