Загрузка данных


#include <stdio.h>
#define NMAX 10

void input(int *buffer, int *length);
void output(int *buffer, int length);
int sum_numbers(int *buffer, int length);
int find_numbers(int *buffer, int length, int number, int *numbers);

int main()
{
    int buffer[NMAX];
    int numbers[NMAX];
    int length;
    int sum;
    int count;

    input(buffer, &length);

    if (length < 1 || length > NMAX)
    {
        printf("n/a");
        return 0;
    }

    sum = sum_numbers(buffer, length);

    if (sum == 0)
    {
        printf("n/a");
        return 0;
    }

    count = find_numbers(buffer, length, sum, numbers);

    printf("%d\n", sum);
    output(numbers, count);

    return 0;
}

void input(int *buffer, int *length)
{
    if (scanf("%d", length) != 1)
    {
        *length = 0;
        return;
    }

    if (*length < 1 || *length > NMAX)
    {
        return;
    }

    for (int i = 0; i < *length; i++)
    {
        if (scanf("%d", &buffer[i]) != 1)
        {
            *length = 0;
            return;
        }
    }
}

void output(int *buffer, int length)
{
    for (int i = 0; i < length; i++)
    {
        if (i > 0)
        {
            printf(" ");
        }

        printf("%d", buffer[i]);
    }
}

int sum_numbers(int *buffer, int length)
{
    int sum = 0;

    for (int i = 0; i < length; i++)
    {
        if (buffer[i] != 0 && buffer[i] % 2 == 0)
        {
            sum += buffer[i];
        }
    }

    return sum;
}

int find_numbers(int *buffer, int length, int number, int *numbers)
{
    int count = 0;

    for (int i = 0; i < length; i++)
    {
        if (buffer[i]  != 0 && number % buffer[i] == 0)
        {
            numbers[count] = buffer[i];
            count++;
        }
    }

    return count;
}