모래시계 만들기 문제를 풀었다
제약 조건은
1. 10이하의 수
2. 홀수
3. 0이 입력되면 종료되며 반복해서 입력받고 출력한다
출력 모양은
123454321
2345432
34543
454
5
454
34543
2345432
123454321
코드
/*
* sandClock.c
*
* Created on: 2018. 5. 7.
* Author: YS.Bae
*/
#include <stdio.h>
#define CLOCK_SIZE 17
void sandClock(int num);
void initialize(int arr[CLOCK_SIZE][CLOCK_SIZE], int size);
void print(int arr[CLOCK_SIZE][CLOCK_SIZE], int size);
int main(){
printf("모래시계 출력 프로그램, 10이하의 홀수를 입력하세요\n");
printf("0을 누르면 종료됩니다\n");
int num;
while (1){
printf("입력 : ");
scanf("%d", &num);
if (num == 0){
break;
}
else if (num > 10){
printf("10보다 작은 수를 입력하세요\n");
continue;
}
else if (num % 2 == 0){
printf("홀수를 입력해 주세요\n");
continue;
}
sandClock(num);
}
printf("프로그램을 종료합니다");
return 0;
}
void sandClock(int num){
int arr[CLOCK_SIZE][CLOCK_SIZE];
int value;
int clockSize = 2 * num - 1;
initialize(arr, clockSize);
for (int i = 0; i < clockSize; i++){
value = i;
if (i < num){
for (int j = i; j < clockSize - i; j++){
if (j < num)
arr[i][j] = ++value;
else
arr[i][j] = --value;
}
}
else{
value = clockSize - (i + 1);
for (int j = clockSize - (i + 1); j < i + 1; j++){
if (j < num)
arr[i][j] = ++value;
else
arr[i][j] = --value;
}
}
}
print(arr, clockSize);
}
void initialize(int arr[CLOCK_SIZE][CLOCK_SIZE], int size){
for (int i = 0; i < size; i++){
for (int j = 0; j < size; j++){
arr[i][j] = 0;
}
}
}
void print(int arr[CLOCK_SIZE][CLOCK_SIZE], int size){
for (int i = 0; i < size; i++){
for (int j = 0; j < size; j++){
if (arr[i][j] == 0){
printf(" ", arr[i][j]);
}
else{
printf("%3d", arr[i][j]);
}
}
printf("\n");
}
}
댓글