c++ - 查找位于数组的最大和最小元素之间的元素的乘积
问题描述
#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) 作为答案,我不知道如何更改它。代码的所有其他部分都运行良好,但如果您有任何建议,我也想阅读它。等待您的帮助。
解决方案
您的问题是您将数组索引与数组值混淆了。
在这里,您将max
(与 相同min
)分配给数组value。
max = lpi_arr[i];
在这里,您将max
(与 相同min
)视为数组索引。
for (int i = max + 1; i < min; i++)
Prod *= lpi_arr[i];
推荐阅读
- function - 是否在 Rust 中优化了对不同函数的尾调用?
- python - 我可以将网络表单中的表格更新保存到 Excel 中吗?
- file-recovery - 使用 remote-ssh 插件在 vs-code 中文件变为空
- python - 自动图像。安全头盔面部和头部的数据集裁剪
- liferay - Liferay 7.3:如何在页面模板中使用自定义 ADT?
- excel - VBA:数据透视表源范围更新问题
- windows - 以编程方式将窗口设置为全屏
- javascript - 如何在Vuejs中设置登录页面的用户名和密码?
- c++ - 无法在 Visual Studio 调试器中编辑 std::atomic 值
- python - 如何在 vs 代码中激活虚拟环境?