Поиск элемента, ближайшего к среднему — c

#arrays #c

#массивы #c

Вопрос:

Как я могу найти элемент, ближайший к среднему значению в массиве c. Это проходит большинство тестов, однако, когда я набираю последовательность 4-1-5-7-2, он выводит 2 вместо 5.

 #include <stdio.h>
#include <math.h>
int main() {
    int A[50], n, k = 0, i = 0;
    double avg = 0;
    scanf_s("%d", amp;n);
    do {
        scanf_s("%d", amp;A[i]);
        avg  = (double)A[i] / n;
    } while (  i < n);
    printf("n%fn", avg);
    for (i = 1; i < n; i  ) {
        if (fabs(A[k] - avg) > fabs(A[i]) - avg) {
            k = i;
        }
    }
    printf("%d", A[k]);
    return 0;
}

  
 

Ответ №1:

В вашем операторе if замените fabs(A[i]) - avg на fabs(A[i] - avg) , чтобы получить абсолютную разницу.