Программа на вход принимает длину массива и массив целых чисел
Программа на вход принимает длину массива и массив целых чисел. В качестве выхода она должна вывести в stdout сумму четных элементов массива и новый сформированный массив из элементов старого, на которые делится нацело подсчитанная ранее сумма. Использовать stdlib.h нельзя. Передача массива в функцию только по указателю. Максимальный размер входного массива - 10. В случае ошибки или отсутствии четных элементов выводить "n/a".
#include <stdio.h>
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);
Функция получает массив данных
через stdin.
Выдает в stdout особую сумму
и сформированный массив
специальных элементов
(выбранных с помощью найденной суммы):
int main()
{
int length;
int buffer[length];
input(buffer, &length);
return 0;
}
Функция должна находить
сумму четных элементов
с 0-й позиции.
int sum_numbers(int *buffer, int length)
{
int sum = 0;
for (int i = 1; i < length; i++)
{
if (i % 2 != 0)
{
sum = sum + buffer[i];
}
}
return sum;
printf("%d\n", sum);
}
Функция должна находить
все элементы, на которые нацело
делится переданное число и
записывает их в выходной массив.
{
// int tmp;
int div = sum_numbers(buffer, length);
int new_arr;
for (int i = 0; i < length; i++) {
if (div % buffer[i] == 0) {
new_arr[i] = new_arr[i] + buffer[i];
}
}
output(new_arr, length);
return 0;
}
void input(int *buffer, int *length) {
char end;
if (scanf("%d%c", length, &end) == 2 && end == '\n' && *length <= 10)
for (int i = 0; i < &length; i++) {
char end;
if (scanf("%d%c", i, &end) == 2 ||
(i < length - 1 && end == ' ') || (i == length - 1 && end == '\n'))
sum_numbers(buffer, *length);
}
else
printf("n/a");
}
void output(int *a, int n) {
for (int i = 0; i < n - 1; i++)
printf("%d ", a[i]);
printf("%d", a[n - 1]);
}
Ответы (1 шт):
Для суммы нужны чётные числа, а не элементы с нечётными индексами
int sum_numbers(int *buffer, int length)
{
int sum = 0;
for (int i = 0; i < length; i++)
if (buffer[i] % 2 == 0)
sum += buffer[i];
printf("%d\n", sum);
return sum;
}
Новый массив (а не одно число)
int* new_arr = new int[10];
int cnt = 0
for (int i = 0; i < length; i++)
if (div % buffer[i] == 0)
new_arr[cnt++] = buffer[i];
Вывести cnt элементов.
Можно также первым проходом подсчитать, сколько будет нужных элементов, создать new_arr точной длины, заполнить его вторым проходом