我有项目,这是我的代码。我期望编写一个控制台应用程序,它可以查找给定文件中最大的k个数字,并按降序打印这些最大的k个数字。我的程序应该把文件名和k作为用户的输入参数。在C++中增加数组大小
例如,对于下面的文件内容:
3, 5, 12, 54, 12, 3, 654, 11, 46, 7, 3
对于k = 3的输出应为:
654 54 46
using namespace std;
int main() {
int i, size, p, maxim, k, n, j;
int* a = new int[7000000];
size = 7000000;
ifstream file("7_million_numbers.txt");
if (file.is_open())
{
for (i = 0; i < size; i = i + 1)
file >> a[i];
}
cout << "Enter the number: " << endl;
cin >> n;
for (j = 1; j < n; j = j + 1) {
for (k = 0; k < size - 1; k++) {
maxim = a[k];
p = k;
for (i = k + 1; i < size; i++)
if (a[i] > maxim) {
maxim = a[i];
p = i;
}
a[p] = a[k];
a[k] = maxim;
}
}
for (i = 0; i < n; i++)
cout << a[i] << " " << endl;
system("pause");
delete[] a;
return 0;
}
此代码不工作。我有“.exe停止工作”的问题。是否因为数组大小?由于程序读取的文本文件有700万个数字。
你有没有尝试过一个文件中有少数? –
“我有'.exe停止工作'问题。”这不是一个问题的技术性描述。在你的调试器中遍历这些代码,找出问题所在;至少,您会得到一个堆栈跟踪,其中包含发生崩溃的行号。 – MrEricSir
问题是什么? – 2016-12-27 04:06:00