以下のコードでは、一定数の入力を読み込んだ後、Nの値が(0に)置き換えられています。スタックにKとSの配列を割り当てているので、これが起こっていると思います。私の結論が正しいかどうか疑問に思っていましたか?私は長い間C言語でコードを作り、Pythonやその他のスクリプト言語に切り替えました。だから、どこかで私の記憶管理がトスのために行ったようだ。スタック上の値の破損
ofstream cop("op1.txt");
ifstream cinp("in1.txt", ios::binary);
int T, t=1;
cinp >> T;
for(;t <= T;t++){
fflush(stdin);
long D;
int N;
long K[N], S[N];
cinp >> D >> N;
double times[N], max = 0;
cout << D << " " << N << endl;
for(long i=0; i<N; i++) {
cout << D << " " << N << endl; // Output of this line is shown below till N gets replaced by 0
cinp >> K[i] >> S[i];
times[i] = (1.0 * (D - K[i]))/S[i];
if(max < times[i])
max = times[i];
}
cout << D << " " << N << endl;
if(t == 3) {
cout << D << " " << N << endl;
for(int i=0;i<N;i++)
cout << K[i] << " " << S[i] << endl;
}
cop << "Case #" << t << ": " << std::setprecision(6) << std::fixed << D/max << endl;
}
それは私が私の結論は、新たななし(スタックに割り当て可能なメモリの良い量が何であるかを右クリックかどうかを知りたいと思った、また
912786011 100 <--- Needs to read 100 nos as N is 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 100
912786011 0 <---------------- Became 0
を置き換えられますときの片鱗)?
コンパイル時に 'N 'がわからない場合、' long K [N] 'を宣言することはできません。さらに悪いことに、実行時に割り振ることができたとしても、配列を割り当てた後でなければ、 'N'で読み込むことさえできません! – CoryKramer
可変長配列はC++では不正です(コンパイラの拡張機能を使用している可能性があります)ので、ヒープに割り当てる必要があります。 – VTT
有効なC++だとしましょう。Nは使用前に値が割り当てられていないため、未定義の動作です。 – DeiDei