Etc/C
hourglass(모래시계)
구운 감자
2025. 1. 26. 18:24
main.c
#include "hourglass.h"
int main()
{
input();
return 0;
}
hourglass.h
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <Windows.h>
void input();
int input_num();
int sandclock(int num);
hourglass.c
#include "hourglass.h"
void input()
{
int system_num = 0;
do {
printf("숫자 입력 (0: 프로그램 종료) >> ");
int num = input_num();
system_num = sandclock(num);
Sleep(3000);
system("cls");
} while (system_num); // system_num 이란 제어 변수 사용, system_num이 0일 시 종료
}
int input_num()
{
int num;
scanf("%d", &num);
return num;
}
int sandclock(int num)
{
int system_num = 0;
num = num < 0 ? -(num) : num; // num 음수면 양수로 만들기
if (num % 2 == 0 && num != 0) //num이 0이 아닌 짝수
{
printf("\n");
int k;
for (int i = 1; i <= num / 2; i++)
{
for (k = 0; k < i - 1; k++)
{
printf(" ");
}
for (int j = num + 1 - i - k; j >= 1; j--)
{
printf("*");
}
printf("\n");
}
for (int i = 1; i <= num / 2 - 1; i++)
{
for (int k = (num / 2) - 1 - i; k > 0; k--)
{
printf(" ");
}
for (int j = 1; j <= i * 2 + 2; j++)
{
printf("*");
}
printf("\n");
}
system_num = 1;
}
else if (num % 2 == 1) // num이 홀수
{
printf("\n");
int k;
for (int i = 1; i <= (num + 1) / 2; i++)
{
for (k = 0; k < i - 1; k++)
{
printf(" ");
}
for (int j = num + 1 - i - k; j >= 1; j--)
{
printf("*");
}
printf("\n");
}
for (int i = 1; i <= num / 2; i++)
{
for (int k = (num / 2) - i; k > 0; k--)
{
printf(" ");
}
for (int j = 1; j <= i * 2 + 1; j++)
{
printf("*");
}
printf("\n");
}
system_num = 1;
}
else if (num == 0) // 0이면 프로그램 종료
{
printf("\n프로그램 종료!\n");
system_num = 0;
}
return system_num;
}
output
숫자 입력 (0: 프로그램 종료) >> 10
**********
********
******
****
**
****
******
********
**********