Я решил реализовать программу search.c, которая выполняет следующую задачу.
Программа принимает через стандартный ввод массив целых чисел и находит первое число, которое удовлетворяет следующим условиям⁚ оно четное, больше или равно математическому ожиданию, подчиняется правилу трех сигм и не равно нулю. Найденное число выводится в стандартный вывод. Если такого числа нет, программа выводит 0. Максимальное количество введенных чисел равно 30. В случае некорректного ввода программа выводит ″n/a».
Чтобы выполнить эту задачу, я использовал подход декомпозиции, разделив задачу на несколько функций, каждая из которых выполняет определенную часть работы. Это позволило сделать функции компактными и простыми.
Первая функция, которую я написал, называется `average`. Она принимает массив чисел и возвращает математическое ожидание. Для этого я суммирую все числа в массиве, а затем деляю эту сумму на количество чисел в массиве. Например, если у нас есть массив [1, 2, 3], математическое ожидание будет равно (1 2 3) / 3 2.
Вторая функция, называемая `standard_deviation`, принимает массив чисел и математическое ожидание и возвращает стандартное отклонение. Стандартное отклонение вычисляется следующим образом⁚ для каждого числа в массиве я нахожу разницу между этим числом и математическим ожиданием, возвожу это значение в квадрат, суммирую все такие значения, затем нахожу среднее арифметическое этой суммы и беру квадратный корень. Например, если у нас есть массив [1٫ 2٫ 3] и математическое ожидание равно 2٫ стандартное отклонение будет равно sqrt((1-2)^2 (2-2)^2 (3-2)^2) sqrt(1 0 1) sqrt(2).Третья функция٫ `check_number`٫ принимает число и проверяет٫ соответствует ли оно условиям⁚ быть четным٫ большим или равным математическому ожиданию٫ подчиняться правилу трех сигм и не равняться нулю. Если число удовлетворяет всем условиям٫ функция возвращает true٫ в противном случае ― false.Главная функция `main` отвечает за чтение входных данных٫ вызов других функций и вывод результата. Вначале она считывает массив чисел из ввода и проверяет٫ что введено не более 30 чисел. Затем она вызывает функцию `average`٫ чтобы найти математическое ожидание٫ и функцию `standard_deviation`٫ чтобы найти стандартное отклонение. Затем она проходит по каждому числу в массиве и проверяет٫ удовлетворяет ли оно всем условиям с помощью функции `check_number`. Если находит число٫ которое удовлетворяет условиям٫ она выводит его в стандартный вывод и завершает программу. Если такого числа нет٫ она выводит 0.
Таким образом, я реализовал программу search.c, которая выполняет задачу с помощью декомпозиции и компактных функций. Я использовал эту программу и получил ожидаемые результаты. Надеюсь, моя статья сможет помочь и вам!