私はプロジェクトを持っており、これは私のコードです。私は与えられたファイルの中で最大のk個の数字を見つけ出し、これらの最大のk個の数字を降順で表示するコンソールアプリケーションを書くことが期待されています。私のプログラムは、ユーザから入力パラメータとしてファイル名とkを取る必要があります。次のファイルの内容については、例えばC++での配列サイズの増加
:K = 3
3, 5, 12, 54, 12, 3, 654, 11, 46, 7, 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
何が問題なのですか? –