Написать программу на языке С++(со всеми ОБЪЯСНЕНИЯМИ пожалуйста)
1. Написать функцию, которая принимает в качестве аргументов целочисленный массив и переменную. Находит сумму четных и сумму нечетных элементов. В переменную-аргумент сохраняет максимальную из сумм. Возвращает минимальную из сумм.
Answers & Comments
#include <iostream>
using namespace std;
int minmax(int a[], int& b) // параметр b передаем по ссылке чтобы его менять
{
int se = 0, so = 0;
for(int i = 0; i < b; i++) // при вызове функции b - размер массива
if (a[i] % 2 == 0) se += a[i];
else so += a[i];
if (se > so)
{
b = se;
return so;
}
else
{
b = so;
return se;
}
}
int main()
{
int n;
cin >> n;
int a[n];
for(int i = 0; i < n; i++)
cin >> a[i];
int b = n; // обязательно записать размер массива !!!
int r = minmax(a, b);
cout << "Сумма min " << r << ", сумма max " << b << endl;
return 0;
}
По поводу "всех объяснений" - я этого не понимаю. Написать что делает каждый оператор, зачем он тут и почему именно такой - это долгое и бессмысленное занятие, ответ будет объемом в несколько книжных страниц, но все равно толком ничего не даст. Если Вы не умеет программировать - учится надо не по ответу на задачу, а если умеете - никакое описание не нужно.
Единственная заморочка тут - передача длины массива в вызываемую функцию. В С++ с этим беда, потому обычно используют библиотечный класс Vector, где можно узнать длину массива. Вместо массива в С++ при вызове функции передается указатель на его первый элемент, поэтому информацию о длине массива получить нельзя. Так что нужно передавать еще один параметр - длину массива. Но в задании сказано, что параметра всего два и второй служит для получения максимальной из двух сумм. Но это при возвращении результата! Поэтому было принято решение при вызове функции в качестве b передать длину массива.