Массивы, сумма и количество - C (СИ)

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

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

Добрый день. Помогите с программой, заранее спасибо. Вычислить Z , где S1, K1, S2, K2 – сумма и количество положительных элементов массива А (75) и В (60) соответственно.

Решение задачи: «Массивы, сумма и количество»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define SIZE_1 75
#define SIZE_2 60
 
size_t count_if(const int* ptr, size_t size, int (*predicate)(int))
{
    size_t count = 0;
    while (size--)
        if (predicate(*ptr++))
            count++;
    return count;
}
 
int sum_if(const int* ptr, size_t size, int (*predicate)(int))
{
    int s = 0;
    while (size--)
    {
        if (predicate(*ptr))
            s += *ptr;
        ptr++;
    }
    return s;
}
 
void dump(const int* ptr, size_t size, const char* fmt)
{
    while (size--)
        printf(fmt, *ptr++);
    putchar('\n');
}
 
void fill(int* ptr, size_t size)
{
    while (size--)
        *ptr++ = (rand() % 20) - 10;
}
 
int is_positive(int value)
{
    return value > 0;
}
 
int main(void)
{
    int a[SIZE_1], b[SIZE_2];
    double s1 = 0, s2 = 0, k1 = 0, k2 = 0;
    srand(time(0));
    fill(a, SIZE_1);
    fill(b, SIZE_2);
    dump(a, SIZE_1, "%d ");
    dump(b, SIZE_2, "%d ");
    s1 = sum_if(a, SIZE_1, is_positive);
    s2 = sum_if(b, SIZE_2, is_positive);
    k1 = count_if(a, SIZE_1, is_positive);
    k2 = count_if(b, SIZE_2, is_positive);
    printf("%lf\n", (s1 + s2) / (k1 + k2));
    return EXIT_SUCCESS;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: stdio.h, stdlib.h и time.h
  2. Определяются константы SIZE_1 и SIZE_2, которые задают размер массивов a и b соответственно.
  3. Определяются функции:
    • count_if, которая принимает указатель на первый элемент массива, размер этого массива и предикат (условие) для элементов массива и возвращает количество удовлетворяющих элементов.
    • sum_if, которая принимает указатель на первый элемент массива, размер этого массива и предикат (условие) для элементов массива и возвращает сумму удовлетворяющих элементов.
    • dump, которая принимает указатель на первый элемент массива, размер этого массива и форматную строку и выводит элементы массива с заданным форматом.
    • fill, которая принимает указатель на первый элемент массива и размер этого массива и заполняет его случайными значениями.
    • is_positive, которая принимает целое число и возвращает true, если число положительное, и false в противном случае.
  4. В функции main создаются два массива a и b, инициализируются случайными числами, выводится их содержимое, затем подсчитывается сумма и количество элементов, удовлетворяющих условию is_positive, для обоих массивов.
  5. Наконец, вычисляется среднее значение суммы и количества элементов, удовлетворяющих условию is_positive, для обоих массивов и выводится на экран.
  6. Функция main возвращает EXIT_SUCCESS.

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


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

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

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