Найти индексы элементов массива, значение которых ближе всего к найденному среднему арифметическому - C (СИ)
Формулировка задачи:
Напишите программу, которая находит среднее арифметическое между максимальным элементом и минимальным элементом массива, а также находит индекс(или индексы) элемента(ов), значение которого ближе всего к найденному среднему арифметическому.
Подскажите как найти индексы элементов значение которых ближе всего к среднему арифметическому
double m[10] = { 2.2, 3.1, 7.7, 9.1, 6.5, 4.6, 3.5, 5.4, 1.4, 7.6 };
double sr_ar, max = 0, min = 10;
for (int i = 0; i < 10; i++)
{
printf("m[%d] = %.1lf\n", i, m[i]);
if (max < m[i]) max = m[i];
if (min > m[i]) min = m[i];
}
printf("\nmax = %.1lf\n", max);
printf("min = %.1lf\n", min);
sr_ar = (double)(max + min) / 2;
printf("Среднее арифметическое = %.1lf\n", sr_ar);Решение задачи: «Найти индексы элементов массива, значение которых ближе всего к найденному среднему арифметическому»
textual
Листинг программы
#include <stdio.h>
const int N = 10;
int main()
{
int i, min, mid, max, x, y, sum = 0, A[10] = {4, 2, -7, 24, -60, 0, 108, - 72, 19, 54};
min = A[0];
max = A[0];
for(i = 0; i < N; i++){
sum += A[i];
if(A[i] > max)
max = A[i];
if(A[i] < min)
min = A[i];
}
mid = sum / N;
for(i = 0; i < N; i++){
if(A[i] > min && A[i] < mid){
min = A[i];
x = i;
}
if(A[i] < max && A[i] > mid){
max = A[i];
y = i;
}
}
printf("Arithmetic mean is %d\n", mid);
printf("and next values is A[%d] = %d and A[%d] = %d\n", x, min, y, max);
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки для работы с вводом/выводом (stdio.h).
- Объявление константы N, которая задает размер массива A.
- Ввод данных в массив A.
- Инициализация переменных min и max значением первого элемента массива A.
- Вычисление суммы элементов массива A.
- Вычисление минимального и максимального значения в массиве A.
- Вычисление среднего арифметического (mid) путем деления суммы элементов массива на N.
- Поиск элемента массива, значение которого ближе всего к min.
- Поиск элемента массива, значение которого ближе всего к max.
- Вывод среднего арифметического на экран.
- Вывод на экран значений найденных элементов (min, max, x, y).
- Возврат 0, что означает успешный конец работы программы.