-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'이됩니다. –
Richard Critten의 의견 (seleznev anton의 답변과 같은)은 귀하가 요청한 특정 문제에 대해 설명합니다. 또한, int 나선 [n] [n];은 C++에서 유효하지 않은 VLA를 선언합니다. 아마 컴파일러가 확장 기능을 지원합니다. – Peter