정보처리기사 배열 마방진(Magic Square) 만들기 입니다.
#include <stdio.h> //마방진의 크기를 결정 //홀수로 입력하되, 19미만이 보기 좋음 //7이상부터 19까지는 대각선 "우상좌하" 의 합이 다른 합과 다름 #define MAX 19 int main() { //좌표 0, 2부터 시작 int i(0), j(2), k(1); int arr[MAX][MAX]; for(k=1 ; k<=(MAX*MAX) ; k++) { //처음 0, 2에 1을 대입 arr[i][j] = k; //k가 배열 크기의 배수이면 규칙에 따라 행만 증가 if(k%MAX == 0) ++i; //k가 배열 크기의 배수가 아니면 규칙에 따라 "행감소, 열증가" if(k%MAX != 0) { //마방진 규칙 "행감소, 열증가" --i; j++; //행이 감소하다가 0보다 작아지면 배열 크기의 가장 큰 값으로 교체 if(i < 0) i = MAX-1; //열이 증가하다가 배열 크기보다 커지면 0으로 교체 if( j > (MAX-1) ) j = 0; } } //출력 for(i=0 ; i<MAX ; i++) { for(j=0 ; j<MAX ; j++) { printf("%4d", arr[i][j]); } printf("\n"); } printf("\n"); return 0; }
'예제 모음 > 정보처리기사-배열' 카테고리의 다른 글
[정보처리기사] 달팽이 만들기 - C언어 구현 (2) | 2013.09.23 |
---|---|
[정보처리기사] 다이아몬드 만들기 - C언어 구현 (0) | 2013.09.23 |
[정보처리기사] 모래시계 만들기 - C언어 구현 (0) | 2013.09.23 |
[정보처리기사] 대각선 채우기 - C언어 구현 (0) | 2013.09.23 |
[정보처리기사] ㄹ자 채우기 - C언어 구현 (0) | 2013.03.31 |
[정보처리기사] 5행 5열 직각삼각형 - C언어 구현 (0) | 2013.03.31 |