#include "pch.h"
#include <cstdlib>
#include <locale>
#include <string>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main(void)
{
setlocale(LC_ALL, "Russian");
int a[100], max, min, imax, imin, Proizvedenie = 1;
int i, N;
srand(time(0));
system("cls");
cout << "Введите колличество элементов:";
cin >> N;
for (i = 0; i < N; i++)
a[i] = rand() % 150 - 50;
cout << "\n Исходный массив:\n";
for (i = 0; i < N; i++)
cout << a[i] << " ";
max = a[i];
imax = 0;
for (i = 1; i < N; i++)
if (max < a[i])
{
max = a[i];
imax = i;
}
min = a[0];
imin = 0;
for (i = 1; i < N; i++)
if (min > a[i])
{
min = a[i];
imin = i;
}
for (int i = std::min(imax, imin); i < std::max(imax, imin); ++i)
{
Proizvedenie *= a[i];
}
cout << "\n Произведение: = " << Proizvedenie;
system("pause");
return 0;
}
Ошибка в том, что считает вместе с минимальным элементом
int i = std::min(imax, imin) + 1
вещественных
#include <iostream>
#include <algorithm>
#include <vector>
#include <numeric>
#include <iterator>
using namespace std;
auto mulM = [](auto const& ctx)
{
auto [lo, hi] = minmax_element(begin(ctx), end(ctx));
return (distance(min(lo, hi), max(lo, hi)) < 2)
? 0
: accumulate(min(lo, hi) + 1, max(lo, hi), 1, multiplies<double>());
};
int main()
{
vector<double> v = {2, 5, 42, 7, 81, 21, 3, 2, 7};
auto r = mulM(v);
cout << r;
}