【发布时间】:2017-11-25 00:45:37
【问题描述】:
我正在开发 C++ 程序以将随机值存储在大小为 1000 的数组中。 然后程序将要求用户输入“X”最大和“Y”最小数字。 'X' 和 'Y' 是任何小于数组大小的整数值。 然后程序将从数组中输出“X”个最大和“Y”个最小数字。
假设数组有 1 2 4 7 9 14 3
X=2
Y=3
输出将是
数组中最大的2个数是14 9
数组中最小的3个数是1 2 3
#include<iostream>
using namespace std;
int main()
{
int size[1000];
int x, y, max;
max = 0;
cout << "How many Largest numbers do you need ?\n";
cin >> x;
cout << "How many Smallest numbers do you need ?\n";
cin >> y;
for (int i = 0;i <= 999;i++)
{
size[i] = rand() % 100;
cout << "No." << i << " = " << size[i] << endl;
}
for (int j = 1;j <= x;j++)
{
for (int i = 0;i <= 999;i++)
{
if (size[i] > max)
max = size[i];
}
cout << "LARGEST NUMBERS\n" << max << endl;
}
}
【问题讨论】:
-
问题是什么?
-
@PaulMcKenzie 我的问题在上面,如下所述是我用来查找值的代码,但它每次都给出相同的值,例如,如果我想要 3 个最大的数字,它会给我相同的值。 99, 99 ,99
-
@1337 -- 你没有在你的主题中说明你的程序有什么问题。再次阅读您的请求——您看到问题了吗?但是有一些问题要问你——你能对数字进行排序吗?如果是这样,那么解决方案比您现在尝试的要容易得多。
-
@1337 -- 请打印数组中的数字。您会看到有重复项,因此您可能会得到 99、99、99...,因为您的数组中有 3 个或更多 99。因此,如果不重新考虑如何删除重复项,您的方法就无法奏效。最好将数字存储在
std::set<int>中,然后获取最大/最小值。一个简单的 4 行解决方案。