728x90
반응형
(1) 모래시계와 나비 배열, 배열의 크기를 갖는 구조체 만들기
(2) num을 입력 받고 create() 함수 만들기
void create(ArrStruct *arr, int num) {
// num에 맞추어 구조체 내에 모래시계, 나비 배열 만들기
// num = 5 (홀수만 합시다.)
Ex. 모래시계
[1][1][1][1][1]
[0][1][1][1][0]
[0][0][1][0][0]
[0][1][1][1][0]
[1][1][1][1][1]
Ex. 나비
[1][0][0][0][1]
[1][1][0][1][1]
[1][1][1][1][1]
[1][1][0][1][1]
[1][0][0][0][1]
}
(3) print() 함수를 이용하여 출력하기
void print(ArrStruct *arr) {
// 모래시계 출력
// 나비 출력
}
#include <stdio.h> #include <stdlib.h> #include <string.h> // ArrStruct 구조체 선언 typedef struct sand_butter{ char **sandclock; char **butterfly; int size; } ArrStruct; // create 함수 void create(ArrStruct *arr, int num){ int center, i, j; arr->size = num; // num값을 ArrStruct 구조체의 size에 넣어줌 // sandclock 동적할당 arr->sandclock = (char **)malloc(sizeof(char *) * num); for(i = 0; i < num; i ++) arr->sandclock[i] = (char *)malloc(sizeof(char) * num); center = num / 2; // sandclock 알고리즘 for(i = 0; i < num; i++){ for(j = 0; j < num; j++){ if(i <= center){ if(j >= i && j < (num - i)) arr->sandclock[i][j] = '*'; else arr->sandclock[i][j] = ' '; } else { if(j >= num - (i + 1) && j <= i) arr->sandclock[i][j] = '*'; else arr->sandclock[i][j] = ' '; } } } // butterfly 동적할당 arr->butterfly = (char **)malloc(sizeof(char *) * num); for(i = 0; i < num; i++) arr->butterfly[i] = (char *)malloc(sizeof(char) * num); // butterfly 알고리즘 for(i = 0; i < num; i++){ for(j = 0; j < num; j++){ if(i <= center){ if(j <= i || (num - i) <= (j + 1) ) arr->butterfly[i][j] = '*'; else arr->butterfly[i][j] = ' '; } else { if(j <= num - (i + 1) || j >= i) arr->butterfly[i][j] = '*'; else arr->butterfly[i][j] = ' '; } } } } // print 함수 void print(ArrStruct *arr){ int i, j; // sandclock 출력 for(i = 0; i < arr->size; i++){ for(j = 0; j < arr->size; j++){ printf("%c", arr->sandclock[i][j]); } printf("\n"); } printf("\n\n\n\n"); // butterfly 출력 for(i = 0; i < arr->size; i++){ for(j = 0; j < arr->size; j++){ printf("%c", arr->butterfly[i][j]); } printf("\n"); } } int main(){ int i, num; printf("수 입력 : "); scanf("%d", &num); // 짝수 거르기 if(num % 2 == 0){ printf("홀수만 입력하세요. \n"); return 0; } // ArrStruct 구조체 동적할당 ArrStruct *arr = (ArrStruct *)malloc(sizeof(ArrStruct) * 1); create(arr, num); // create 함수 호출 print(arr); // print 함수 호출 for(i = 0; i < num; i++){ free(arr->sandclock[i]); free(arr->butterfly[i]); } free(arr->sandclock); free(arr->butterfly); free(arr); return 0; }
반응형
'Programming > C' 카테고리의 다른 글
[C] text file 정렬 (0) | 2017.05.13 |
---|---|
[C] 버블 정렬과 선택 정렬 (0) | 2017.05.13 |
[C] 포켓몬 연습 문제 2 (0) | 2017.04.19 |
[C] 포켓몬 연습 문제 1 (0) | 2017.04.19 |
[C] 문자열 패턴 찾기 (0) | 2017.04.10 |
댓글