5x5배열을 겹치지않게 1부터25까지 무작위로받아서 1~5를 입력받아서
1일경우 가운데중심으로 상하가바뀌는 함수
2일경우 좌우가바뀌는함수
3일경우 오른쪽으로 배열이 회전
4일경우 왼쪽으로배열이 회전
5일경우 아무것도안하고끝내기
1일경우 가운데중심으로 상하가바뀌는 함수
2일경우 좌우가바뀌는함수
3일경우 오른쪽으로 배열이 회전
4일경우 왼쪽으로배열이 회전
5일경우 아무것도안하고끝내기
#include <stdio.h> #include <stdlib.h> int arr[5][5]; void horizon() { int i, j, tmp; for (i = 0; i < 3; i++) { for (j = 0; j < 5; j++) { tmp = arr[i][j]; arr[i][j] = arr[4-i][j]; arr[4-i][j] = tmp; } } } void vertical() { int i, j, tmp; for (i = 0; i < 5; i++) { for (j = 0; j < 3; j++) { tmp = arr[i][j]; arr[i][j] = arr[i][4-j]; arr[i][4-j] = tmp; } } } void r_rotate() { int i, j, tmp; for (i = 0; i < 5; i++) { tmp = arr[i][4]; for (j = 4; j > 0; j--) arr[i][j] = arr[i][j-1]; arr[i][0] = tmp; } } void l_rotate() { int i, j, tmp; for (i = 0; i < 5; i++) { tmp = arr[i][0]; for (j = 0; j < 4; j++) arr[i][j] = arr[i][j+1]; arr[i][4] = tmp; } } void print() { int i, j; for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) printf("%2d ", arr[i][j]); printf("\n"); } printf("\n"); } void menu_dsp() { printf("1. 상하 교환\n2. 좌우 교환\n3. 우로 회전\n4. 좌로회전\n5. 종료\n\n"); } int main() { int i, j, select; int *ptr; // srand((null)time(NULL)); for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { arr[i][j] = rand() % 25 + 1; ptr = &arr[0][0]; while (ptr < &arr[i][j]) { if(*ptr == arr[i][j]) { j--; break; } ptr++; } } } print(arr); while (1) { menu_dsp(); printf("작업 : "); scanf("%d", &select); switch (select) { case 1 : horizon(arr); print(arr); break; case 2 : vertical(arr); print(arr); break; case 3 : r_rotate(arr); print(arr); break; case 4 : l_rotate(arr); print(arr); break; case 5 : return; break; defaule : break; } } return 0; } | cs |
다음검색