首页 > 解决方案 > 查找位于数组的最大和最小元素之间的元素的乘积

问题描述

#include <iostream>
using namespace std;

int main()
{
    int n, a, b,min,max, Prod = 1, Sum = 0;
    cout << "Initialize an array n: ";
    cin >> n;
    do
    {
        cout << "Input the start value: ";
        cin >> a;
        cout << "Input the end value: ";
        cin >> b;
        if (!(a < b))
        {
            cout << "a is bigger than b, please enter new values " << endl;
            continue;
        }
    } while (!(a < b));

    int* lpi_arr;
    lpi_arr = new int[n];

    srand(time(NULL));
    cout << "Int numbers from " << a << " to " << b << endl;

    for (int i = 0; i < n; i++)
    {
        lpi_arr[i] = rand() % (b - a) + a;
        cout << lpi_arr[i] << " ";
    }

    max = lpi_arr[0];
    for (int i = 0; i < n; i++)
    {
        if (max < lpi_arr[i])
            max = lpi_arr[i];
    }
    min = lpi_arr[0];
    for (int i = 0; i < n; i++)
    {
        if (min > lpi_arr[i])
            min = lpi_arr[i];
    }

    cout << "\nmin element is = " << min << endl;
    cout << "\nmax element is = " << max << endl;

    for (int i = max + 1; i < min; i++)
        Prod *= lpi_arr[i];

    for (int i = 0; lpi_arr[i] < 0 && i < n; i++)
        Sum += lpi_arr[i];

    cout << "Summ =" << Sum << endl << "Prod = " << Prod << endl;

    delete[] lpi_arr; 
}

此代码的主要目的是计算数组的负数之和,以及位于数组的最大和最小元素之间的元素的乘法。

问题是代码只实现了 1(one) 作为答案,我不知道如何更改它。代码的所有其他部分都运行良好,但如果您有任何建议,我也想阅读它。等待您的帮助。

标签: c++arrays

解决方案


您的问题是您将数组索引与数组值混淆了。

在这里,您将max(与 相同min)分配给数组value

max = lpi_arr[i];

在这里,您将max(与 相同min)视为数组索引

for (int i = max + 1; i < min; i++)
    Prod *= lpi_arr[i];

推荐阅读