void setup() {
Serial.begin(9600); //инициализация последовательного порта
while(!Serial); //ожидание открытия порта, здесь вроде нет необходимости, просто как пример while
int hw_arr[] = {10, 7, 0, 13, 1, 24, 17, 19, 44, 3}; //инициализация целочисленного массива с элементами
int arr_len = sizeof(hw_arr) / sizeof(hw_arr[0]); //вычисление длины массива (числа элементов)
Serial.println("Содержание массива:"); //вывод в терминал сообщения с содержимым массива
for (int i = 0; i < arr_len; i++) { //используется цикл for с приращением ограниченным длиной массива
Serial.print(hw_arr[i]); //последовательный вывод элементов массива
Serial.print("\t"); //через табуляцию
}
Serial.println();
Serial.println();
Serial.print("Минимальное значение среди "); //после пояснения через табуляцию выводится
Serial.print("элементов массива:\t\t"); //возвращаемое целочисленное значение функции fMin
Serial.println(fMin(hw_arr, arr_len)); //минимальное значение среди элементов массива
delay(300); //задержка выполнения на 0,3 сек для наглядности
Serial.print("Максимальное значение среди "); //после пояснения через табуляцию выводится
Serial.print("элементов массива:\t\t"); //возвращаемое целочисленное значение функции fMax
Serial.println(fMax(hw_arr, arr_len)); //максимальное значение среди элементов массива
delay(300); //задержка выполнения на 0,3 сек для наглядности
Serial.print("Среднее арифметическое значение "); //после пояснения через табуляцию выводится
Serial.print("элементов массива:\t"); //возвращаемое вещественное значение функции fAvg
Serial.println(float(fAvg(hw_arr, arr_len))); //среднее арифметическое значение элементов массива
// //в каждую функции при вызове передается два аргумента:
// //hw_arr - адрес первого элемента массива hw_arr[]
// //arr_len - длина массива hw_arr[] (значение переменной arr_len)
}
void loop() {
}
int fMin(int a[], int ln) { //инициализация целочисленной функции fMin() с аргументами "a[]" - первый элемент массива и "ln" - длина массива
int arr_min = 32767; //для определения мин. значения присваиваем переменной arr_min максимальное значение для типа integer
for (int i = 0; i < ln; i++) { //используем цикл for с приращением ограниченным длиной массива
arr_min = min(arr_min, a[i]); //записываем в arr_min возвращаемое значение функции min(), последовательно сравнивая
} //сначала максимально возможное значение с первым элементом массива,
return arr_min; //затем каждый последующий элемент сравнивается с результатом предыдущего сравнения
} //когда условие перебора становится ложным функция возвращает результат последнего выбора
int fMax(int a[], int ln) { //инициализация целочисленной функции fMax() с аргументами "a[]" - первый элемент массива и "ln" - длина массива
int arr_max = -32768; //для определения макс. значения присваиваем переменной arr_max минимальное значение для типа integer
for (int i = 0; i < ln; i++) { //используем цикл for с приращением ограниченным длиной массива
arr_max = max(arr_max, a[i]); //записываем в arr_min возвращаемое значение функции max(), последовательно сравнивая
} //сначала минимально возможное значение с первым элементом массива,
return arr_max; //затем каждый последующий элемент сравнивается с результатом предыдущего сравнения
} //когда условие перебора становится ложным функция возвращает результат последнего выбора
float fAvg(int a[], int ln) { //инициализация вещественной функции fAvg() с аргументами "a[]" - первый элемент массива и "ln" - длина массива
int arr_sum = 0; //инициализация целочисленной переменной arr_sum для предварительного суммирования элементов массива
float arr_avg = 0; //инициализация вещественной переменной arr_avg для записи среднего арифметического значения
for (int i = 0; i < ln; i++) { //для суммирования используем цикл for с приращением ограниченным длиной массива
arr_sum += a[i]; //в ходе перебора суммируем каждый последующий элемент массива с имеющимся значением arr_sum
} //для сокращения используется составной оператор "+=" фактически повторяющий конструкцию вида arr_sum = arr_sum + a[i]
arr_avg = float(arr_sum) / ln; //когда условие перебора становится ложным значение переменной arr_summ представляется вещественным и делится на длину массива
return arr_avg; //функция возвращает полученное значение arr_avg
} //конец сказки