を与えるなぜこのコードは、コードブロックにうまく動作しますが、codechefのコンパイラ にランタイム(SIGSEGV)エラーになります以下のコードを通過し、このerror.Thankに対する解決策を教えてください君は。C++セグメンテーションエラー:このプログラムは、ランタイムエラー(SIGSEGV)
#include<iostream>
using namespace std;
int main(){
int t;
long n;
cin>>t;
while(t--){
cin>>n;
int i=2,m=0,j=0,a[n/2];
while(i<=n/2){
if(n%i==0){
n=n/i;
a [ j++ ] = i;
m++;
i = 2;
}
else i++;
a[j] = n;
}
cout << m+1 << endl;
for(int i=0;i<=m;i++)
cout << a[i] << endl;
}
return 0;
}
デバッグを行いましたか?あなたはSegfaultが何によって引き起こされたのか調べましたか? – Carcigenicate
どこが失敗しているのですか、これを修正するためのあなたの努力は何ですか? –
このコードではセグメンテーションフォルトは表示されません。しかし、私はいくつかのコンパイラでは配列を宣言するために一定の値を与える必要があることに言及する価値があると思います。そうしないと、コンパイラエラーが発生します。 – Hamed