Заменить нулевые элементы на среднее арифметическое наименьшего и наибольшего элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Заменить нулевые элементы на среднее арифметическое наименьшего и наибольшего элементов Размер масива -11 Тип- действительный через функцию Желательно не у visual studio(но можно)

Решение задачи: «Заменить нулевые элементы на среднее арифметическое наименьшего и наибольшего элементов»

textual
Листинг программы
#include <stdio.h>
 
#define N 11
 
// заполняем массив значениями. полученными с клавиатуры
void input_arr (double * s)
{
    int i;
    for (i=0; i<N; i++)
    {
        printf("a[%i] = ", i);
        scanf("%lf", &s[i]);
    }
}
// машинный эпсилон для сравнения вещественных
double m_eps (void)
{
    double e = 1.0;
    while (1.0 + e / 2.0 > 1.0) e /= 2.0;
    return e;
}
// заменяем нулевые элементы средним арифметическим
void change_arr (double * s, double g)
{
    int i;
    for (i=0; i<N; i++)
        if (s[i]-0.0 <= m_eps())
            s[i] = g;
}
// ГЛАВНАЯ ФУНКЦИЯ
int main (void)
{
    double a[N];        // массив
    input_arr(a);       // заполняем массив
 
    // находим минимальное и максимальное значения в массиве:
    int i;
    double min, max;
    for (i=0; i<N; i++)
    {
        if (i < 1) min = max = a[i];
        if (a[i] < min) min = a[i];
        if (a[i] > max) max = a[i];
        printf("%5.2lf", a[i]);     // и "под шумок" выводим его на экран
    }
    printf("\n");
 
    // теперь находим среднее арифметическое
    double av = (min+max) / 2.0;
 
    // отправляем массив в функцию для придания ему бодрости и замены нулевых
    change_arr(a, av);
 
    // выводим получившийся массив на экран
    for(i=0; i<N; i++)
        printf("%5.2lf", a[i]);
    printf("\n");
    return 0;
}

Объяснение кода листинга программы

  1. Включаем заголовочный файл stdio.h для использования функций ввода-вывода
  2. Определяем размер массива N равным 11
  3. Функция input_arr() заполняет массив a значениями, полученными с клавиатуры
  4. Функция m_eps() вычисляет машинное эпсилон для сравнения вещественных чисел
  5. Функция change_arr() заменяет нулевые элементы массива на среднее арифметическое min и max
  6. В функции main() создаем массив a типа double и инициализируем его нулями
  7. Заполняем массив a значениями с клавиатуры с помощью функции input_arr()
  8. Находим минимальное и максимальное значение в массиве с помощью цикла и сохраняем их в переменные min и max
  9. Выводим массив a на экран с помощью цикла и функции printf()
  10. Вычисляем среднее арифметическое min и max и сохраняем его в переменную av
  11. Отправляем массив a в функцию change_arr() для замены нулевых элементов на среднее арифметическое min и max
  12. Выводим измененный массив a на экран с помощью цикла и функции printf()
  13. Возвращаем 0 из функции main(), что означает успешное завершение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы