Операции с минимальными и максимальными значениями трех массивов - C (СИ)
Формулировка задачи:
Дано 3 массива , надо найти их min и max, потом min(a)+max(b)-min(c)
Решение задачи: «Операции с минимальными и максимальными значениями трех массивов»
textual
Листинг программы
#include <stdio.h>
int * max_element(const int * array, const size_t count) {
return ( count < 2 ) ? (int*)array : max_element(array + ( array[0] < array[count - 1] ), count - 1);
}
int * min_element(const int * array, const size_t count) {
return ( count < 2 ) ? (int*)array : min_element(array + ( array[0] > array[count - 1] ), count - 1);
}
#define COUNT(arr) ( sizeof(arr) / sizeof(*(arr)) )
int main(void) {
int a[] = { 3, 8, 5 }, b[] = { 1, 6, 7, 5, 2 }, c[] = { 8, 5, 9, 7 };
printf("%d\n", *min_element(a, COUNT(a)) + *max_element(b, COUNT(b)) - *min_element(c, COUNT(c)));
return 0;
}
Объяснение кода листинга программы
Вывод: В данном коде реализованы две функции:
- Функция
max_element, которая возвращает указатель на максимальный элемент в массиве. Если массив содержит менее двух элементов, то возвращается указатель на первый элемент массива. - Функция
min_element, которая возвращает указатель на минимальный элемент в массиве. Если массив содержит менее двух элементов, то возвращается указатель на первый элемент массива. Также в коде присутствует макросомCOUNT, которое вычисляет количество элементов в массиве. В функцииmainопределены три массива:a,bиc. В строке с выводом результата выполняются следующие действия: - Вычисляется минимальное значение в массиве
aи сохраняется в переменной. - Вычисляется максимальное значение в массиве
bи сохраняется в переменной. - Вычисляется минимальное значение в массиве
cи сохраняется в переменной. - Выводится результат вычитания минимального значения из массива
aи максимального значения из массиваbи сложения с отрицательным минимальным значением из массиваc. Код работает корректно, если массивы содержат по меньшей мере два элемента.