Вычисление в диапазоне
Надо найти среднее арифметическое модулей четных элементов в диапазоне (первое отрицательное - последнее положительное).
Как сделать, чтобы считало из диапазона?
#include <iostream>
#include<iomanip>
#include <math.h>
using namespace std;
void sredArifm(int a[], int, double*, int*, int*, int*);
int main()
{
double sred;
int i, n, a[10], posPol, pervOtr, sum;
cout << "Vvedite razmer massiva: ";
cin >> n;
cout << "\Vvedite massiv:\n";
for (i = 0; i<n; i++)
{
cout << "Vvedite a[" << i << "]=";
cin >> a[i];
}
cout << "\Massiv a:\n";
for (i = 0; i<n; i++)
cout << setw(7) << a[i];
cout << endl;
sredArifm(a, n, &sred, &sum, &posPol, &pervOtr);
cout << "\nPosPol= " << posPol << "\nPervOtr= " << pervOtr << endl;
cout << "\nsum= " << sum << endl;
cout << "\nsred=" << sred << endl;
system("pause");
return 0;
}
void sredArifm(int a[], int n, double* sred, int*sum, int*posPol, int*pervOtr)
{
int i, j;
*pervOtr = a[0];
*posPol = a[0];
j = 0, *sum = 0;
for (i = 0; i < n; i++)
{
if (!(a[i] % 2))
{
while (a[i] >= 0)
i++;
*pervOtr = a[i]; break;
}
}
for (i = n - 1; i >= 0; i--)
{
if (!(a[i] % 2))
{
if (a[i] > 0)
*posPol = a[i]; break;
}
}
for (i = *pervOtr; i < *posPol; i++)
{
if (!(a[i] % 2))
{
*sum += abs(a[i]);
++j;
}
}
cout << "\nj=" << j << endl;
*sred = *sum / j;
}
Источник: Stack Overflow на русском