배열 포인터를 활용한 문제를 풀던중 의문이 들었어요~
조회수 559회
#include<stdio.h>
void rotate(int(*ptr)[4])
{
int i,j;
int temp[4][4];
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
temp[i][j]=ptr[3-j][i];
}
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
ptr[i][j]=temp[i][j];
}
}
}
void howmanytimes(int n,void(*ptr1)(int(*ptr2)[4]))
{
int i=0;
int a,b;
while(i<n)
{
ptr1(ptr2);
for(a=0;a<4;a++)
{
for(b=0;b<4;b++)
{
printf("%1d",ptr2[a][b]);
}
printf("\n");
}
printf("\n");
i++;
}
}
int main(void)
{
int arr[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int num=2;
printf("회전을 몇번 하실건가요?");
howmanytimes(num,rotate(arr));
return 0;
}
4x4 의 int형 2차원 배열에서 입력한 횟수만큼 요소들을 오른쪽 방향으로 90도씩 이동시켜서 그 결과를 각각 출력시키는 프로그램 소스를 짜는건데요, 실행을 하는데 어느 부분들이 틀렸는지 잘 모르겠어요 ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
함수 포인터를 약간 이상하게 쓰신듯 해서 코드를 조금 수정했습니다. 요새 C 컴파일러가 어떤 방식으로 동작하는지 몰라서 "코드실행기"가 인식하도록만 코드를 바꿔봤네요.
include
void rotate(int(*ptr)[4]) { int i,j; int temp[4][4]; for(i=0;i<4;i++) { for(j=0;j<4;j++) { temp[i][j]=ptr[3-j][i]; } } for(i=0;i<4;i++) { for(j=0;j<4;j++) { ptr[i][j]=temp[i][j]; } } }
void howmanytimes(int n,void(function)(int()[4]), int(*ptr2)[4]) { int i=0; int a,b; while(i<n) { function(ptr2); for(a=0;a<4;a++) { for(b=0;b<4;b++) { printf("%02d ",ptr2[a][b]); } printf("\n"); } printf("\n"); i++; } }
int main(void) { int arr[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int num=1;
howmanytimes(num,&rotate,arr); return 0;
}
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
함수 포인터 쓰시려던게 아닌 것 같아 최소 수정했습니다.
#include <stdio.h> void rotate(int (*arr)[4]) { int i, j; int temp[4][4]; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { temp[i][j] = arr[3 - j][i]; } } for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { arr[i][j] = temp[i][j]; } } } void howmanytimes(int n, int (*arr)[4]) { n = (n & 3); for (int i = 0; i < n; i++) { rotate(arr); } for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { printf("%02d ", arr[i][j]); } printf("\n"); } printf("\n"); } int main(void) { int arr[4][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; int num = 2; printf("회전을 몇번 하실건가요?"); return 0; }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력