-1
不正なアクセスエラーを修正できますか? は、ここでは、コードです:不正アクセスC++エラー
#include <iostream>
using namespace std;
int main() {
int t,tr=0;
cin>>t;
while (tr<t) {
int n;
cin>>n;
int distance=n;
int number;
number=n*n;
int spiral[n][n];
for (int i=0;i<n;i++) {
for (int j=0; j<n; j++) {
spiral[i][j]=0;
}
}
for (int i=0; i<n;) {
for (int j=0; j<n;) {
spiral[i][j]=number;
number=number-1;
//cout<<"ij"<<endl;
for (int k=0; k<distance; k++) {
i++;
spiral[i][j]=number;
number--;
//cout<<"k"<<endl;
}
}
}
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
cout<<spiral[i][j];
}
cout<<endl;
}
tr++;
}
return 0;
}
不正アクセスはここ
spiral[i][j]=number;
にある問題のためのリンクですが、これは現時点では重要ではありません。私はnszmobiesを試しましたが、うまく動作しませんでしたので、私はあなたに尋ねています。 これはC++です。 Here is the problem。
デバッガでプログラムを実行し、その行の 'i'と' j'の値をチェックします。 –
上記の行(悪いアクセス)では 'i ++;'ここで 'i'はネストされたループの両方でインクリメントされ、決してリセットされません(ループ内で)'> = n'になります。 –
リチャード・クリステンのコメント(seleznev antonの答えのような)はあなたが尋ねた特定の問題について説明しています。さらに、 'int spiral [n] [n];'はVLAを宣言しますが、これはC++では無効です。あなたのコンパイラはおそらくそれを拡張としてサポートしています。 – Peter