CAFE

C 프로그래밍

2차원 배열의 상하,좌우 대칭교환, 좌우 회전

작성자별은빛나고|작성시간15.11.12|조회수3,667 목록 댓글 0
5x5배열을 겹치지않게 1부터25까지 무작위로받아서 1~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


다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼