Посчитать количество элементов массива, лежащих в заданном промежутке - C (СИ)

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

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

посчитать количество элементов лежащих в промежутке (-13;25) массива B(25)

Решение задачи: «Посчитать количество элементов массива, лежащих в заданном промежутке»

textual
Листинг программы
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.

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


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

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

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