열혈강의 도전 three 1번 질문이요
호습다
질문 제목 : 4*4행렬을 90도씩 회전시키는 프로그램인데요
출력은 제대로 돼는데 좀더 간소화 시킬 수 있을까요?
그리고 다차원배열을 포인터를 이용하여 바꾸는방법이 자꾸 헷갈리네요
도움좀 부탁드립니다질문 내용 :
#includestdio.h
void rotation(int **a);
void main(void){
int a[4][4]={{1,2,3,4},
{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int ch;
rotation(&a);
getch();
}
void rotation(int (*a)[4]){
int b[4][4];
int t[4][4];
int i,j,ch;
for(i=0;i4;i++){
for(j=0;j4;j++){
t[i][j]=a[i][j];
}
}
while(1){
printf(90도 회전하시겠습니까(1:90도 기타:종료)?);
scanf(%d,&ch);
if(ch !=1) break;
for(i=0;i4;i++){
for(j=0;j4;j++){
b[i][j]=t[3-j][i];
}
}
for(i=0;i4;i++){
for(j=0;j4;j++){
printf(%2d ,b[i][j]);
}
printf(\n);
}
for(i=0;i4;i++){
for(j=0;j4;j++){
t[i][j]=b[i][j];
}
}
}
}
-
아메
\tint arr[4][4]={1, 2, 3,4,5,6,7,8,9,10,11,12,13,14,15,16};
\tint temp;
\tint i, j, k, a, b;
\tfor(i=0; i4; i++)
\t{
\t\tfor(j=0; j2; j++)
\t\t{
\t\t\tfor(k=0; k2; k++)
\t\t\t{
\t\t\t\ttemp=arr[j][k];
\t\t\t\tarr[j][k]=arr[3-k][j];
\t\t\t\tarr[3-k][j]=arr