void print_snare(int **arr, int n){
int i,j=0,k=0;
// j가세로
// k가가로
int count=0,flag=1;
int input_cn=0;
// 입력횟수카운트
int range=n; // 처음은n과같으나행렬연산이후n-1만큼감소됨
for(i=0;i<n;i++){
// 가로열부터입력
for(input_cn=0;input_cn<range;k+=flag){
arr[j][k]=++count;
input_cn++;
}
k-=flag;
count--; // 겹치는칸때문에count를한번-1 시킴
// 세로열입력
for(input_cn=0;input_cn<range;j+=flag){
arr[j][k]=++count;
input_cn++;
}
j-=flag;
flag*=-1;
k+=flag;
range--;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf(\"%3d \", arr[i][j]);
printf(\"\\n\");
}
}
void ex2_main(){
int n;
int **arr;
int i;
printf(\"nxn의n 입력: \");
scanf(\"%d\",&n);
// 2차원배열의동적할당//
arr=(int**)malloc((sizeof(int*)*n));
*arr=(int*)malloc((sizeof(int*)*n*n));
for(i=1;i<n;i++)
arr[i]=&(arr[0][i*n]);
////////////////////////////
print_snare(arr,n);
free(arr);
}
void main(){
ex2_main();
}
만들어 놓고도 다시 만들라고 하면 못 만들듯...
막 코딩으로 만든거라 몇일전부터 달팽이 풀고 있던 형 보면 참고가 되면 좋겠당
2차원 배열 동적할당 이해 안가네
설명좀 해주실분 ㅠㅠ
응?