Посчитать количество элементов массива, лежащих в заданном промежутке - C (СИ)
Формулировка задачи:
Решение задачи: «Посчитать количество элементов массива, лежащих в заданном промежутке»
typedef int(*functor)(int); size_t count_if(int* first, int * last, functor f) { size_t count = 0; while (first != last) { if(f(*first)) ++count; ++first; } return count; } int f(int v) { return (v > -13) && (v < 25); } //.... enum { SZ = 25 }; int b[SZ]; //... printf("%u\n", count_if(&b[0], &b[0] + SZ, f));
Объяснение кода листинга программы
В представленном коде реализована функция count_if
, которая принимает три аргумента: два указателя на элементы массива и функцию-предикат. Функция подсчитывает количество элементов массива, для которых выполняется условие, определенное функцией-предикатом.
Внутри функции count_if
создается переменная count
, которая инициализируется нулем и используется для подсчета количества элементов. Затем происходит итерация по массиву от first
до last
. Если элемент массива удовлетворяет условию, определенному функцией-предикатом (то есть f(*first)
возвращает ненулевой результат), то значение переменной count
увеличивается на единицу. После каждой итерации значение first
увеличивается на единицу.
Функция f
определяет условие, которое должно быть выполнено для элемента массива, чтобы он был учтен при подсчете. В данном случае условие задается следующим образом: (v > -13) && (v < 25)
. Это означает, что будут учитываться только те элементы массива, значения которых больше -13 и меньше 25.
В конце кода представлен массив b
размером 25, инициализированный значениями от 0 до 24. Затем вызывается функция count_if
с аргументами &b[0]
, &b[0] + SZ
и f
, и результат выводится на экран с помощью функции printf
. В данном случае будет подсчитано количество элементов массива b
, для которых выполняется условие, определенное функцией f
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д