코드가 생각보다 많이 더러울 수도 있음을 미리 알려드립니다.

몆년이 주기인지는 모르겠으나 무슨 조건이 있는 것은 확실하고 음력의 달이 반복되는 현상의 조건때문에 아마도 2099년까지 유효한 프로그램이 될 것 같습니다.

만약 조건을 아시는 분이 이 블로그에 오게 된다면 댓글로 알려주시면 감사할 것 같습니다.

그럼 프로그램과 함께 코드를 수정조치를 취하겠습니다.


#include <time.h>

#include <stdio.h>

#include <Windows.h>

#include <stdlib.h>

#include <string.h>


#define WA 32


#define bool int

#define true 1

#define false 0


/*int main() {

struct tm *localtime(const time_t *timer);

struct tm *date;

const time_t t = time(NULL);

처음:

date = localtime(&t);


printf(

"%d/%d/%d %d:%d:%d\n", date->tm_year + 1900, date->tm_mon + 1,

date->tm_mday, date->tm_hour, date->tm_min, date->tm_sec

);

Sleep(1000);

goto 처음;

getchar();

return 0;

}*/


int main() {

struct tm*localtime(const time_t *timer);

struct tm*date;

const time_t t = time(NULL);


int t_year; //양력 년

int t_mon; //양력 달

int t_day; //양력 일


//int i_year; //임시 년

//int i_mon; //임시 달

//int i_day; //임시 일


int m_year; //음력 년

int m_mon; //음력 달

int m_day; //음력 일


int Mn = 0; //깍인 수


bool no_moon = 0; //삭

bool crescent = 0; //초승달

bool waxing_moon = 0;//상현달

bool full_moon = 0;//보름달

bool last_quarter = 0;//하현달

bool dark_moon = 0;//그믐달


//윤달이 든 목록

int one_more_mon[30];


for (int iii = 0; iii == 30; iii++) {

one_more_mon[iii] = 0;

}

printf("해당 프로그램의 수명은 존재하나 어디까지인지는 모르겠습니다.\n");

printf("버그 제보는 https://kilo-staticgames-85326.tistory.com/notice/85 \n 이메일 제보는 kilo0103@naver.com또는 kyjkyj0816@naver.com \n");

printf("학교에서 나누어준 프린트에 있는 달의 관측시간을 기반으로 제작을 하였다는 것을 말하겠습니다.\n\n\n");

date = localtime(&t);

t_year = date->tm_year + 1900;

t_mon = date->tm_mon + 1;

t_day = date->tm_mday;

printf("양력은 %d년%d월%d일 %d:%d:%d\n\n",

t_year,

t_mon,

t_day,

date->tm_hour,

date->tm_min,

date->tm_sec);

for (;;) {

if (t_year == 2018 && t_mon == 12 && t_day == 7) {

break;

}

else {

t_day--;

Mn++;

if (t_day == 0) {

if (t_mon == 1 || t_mon == 3 || t_mon == 5 || t_mon == 7 || t_mon == 8 || t_mon == 10 || t_mon == 12) { //만약 1월,3월,5월,7월,8월,10월,12월이라면 31일로 셋팅

t_day = 31;

}

else if (t_mon == 2) { //만약 2월이라면

if (t_year % 4 == 0 || t_year % 400 == 0) { //윤년일시에 29일로 셋팅

if (t_year % 100 == 0) {

t_mon = 28;

}

else {

t_mon = 29;

}

}

else { //아니라면 28일로 셋팅

t_mon = 28;

}

}

else {//그 외는 전부 30일로 셋팅

t_day = 30;

}

t_mon--;

if (t_mon == 0) {

t_mon = 12;

t_year--;

}

}

}

}

m_year = 2018;

m_mon = 11;

m_day = 1;

/*while (AaA == Mn) {

//2월을 제외한 달은 30일이 있고 2월만 29일로 고정

printf("음력 시작\n");

m_day++;

if (m_day == 29) {

if (m_mon == 2) {

m_mon++;

m_day = 1;

}

}

else if (m_day == 30) {

m_day = 1;

if (m_mon == 12) {

m_mon = 1;

m_year++;

}

else {

m_mon++;

}

}

AaA++;

}*/

음력반복:

if (Mn == 0) {

goto 음력반복_끝;

}

else {

m_day++;

if (m_year == 2020 && m_mon == 4 && m_day == 30 && one_more_mon[0] == 0) {

one_more_mon[0] = 1;

m_day = 1;

}

else if (m_year == 2023 && m_mon == 2 && m_day == 29 && one_more_mon[1] == 0) {

one_more_mon[1] = 1;

m_day = 1;

}

else if (m_year == 2025 && m_mon == 6 && m_day == 30 && one_more_mon[2] == 0) {

one_more_mon[2] = 1;

m_day = 1;

}

else if (m_year == 2028 && m_mon == 5 && m_day == 30 && one_more_mon[3] == 0) {

one_more_mon[3] = 1;

m_day = 1;

}

else if (m_year == 2031 && m_mon == 3 && m_day == 30 && one_more_mon[4] == 0) {

one_more_mon[4] = 1;

m_day = 1;

}

else if (m_year == 2033 && m_mon == 11 && m_day == 30 && one_more_mon[5] == 0) {

one_more_mon[5] = 1;

m_day = 1;

}

else if (m_year == 2036 && m_mon == 6 && m_day == 30 && one_more_mon[6] == 0) {

one_more_mon[6] = 1;

m_day = 1;

}

else if (m_year == 2039 && m_mon == 5 && m_day == 30 && one_more_mon[7] == 0) {

one_more_mon[7] = 1;

m_day = 1;

}

else if (m_year == 2042 && m_mon == 2 && m_day == 29 && one_more_mon[8] == 0) {

one_more_mon[8] = 1;

m_day = 1;

}

else if (m_year == 2044 && m_mon == 7 && m_day == 30 && one_more_mon[9] == 0) {

one_more_mon[9] = 1;

m_day = 1;

}

else if (m_year == 2047 && m_mon == 5 && m_day == 30 && one_more_mon[10] == 0) {

one_more_mon[10] = 1;

m_day = 1;

}

else if (m_year == 2050 && m_mon == 3 && m_day == 30 && one_more_mon[11] == 0) {

one_more_mon[11] = 1;

m_day = 1;

}

else if (m_year == 2052 && m_mon == 8 && m_day == 30 && one_more_mon[12] == 0) {

one_more_mon[12] = 1;

m_day = 1;

}

else if (m_year == 2055 && m_mon == 6 && m_day == 30 && one_more_mon[13] == 0) {

one_more_mon[13] = 1;

m_day = 1;

}

else if (m_year == 2058 && m_mon == 4 && m_day == 30 && one_more_mon[14] == 0) {

one_more_mon[14] = 1;

m_day = 1;

}

else if (m_year == 2061 && m_mon == 3 && m_day == 30 && one_more_mon[15] == 0) {

one_more_mon[15] = 1;

m_day = 1;

}

else if (m_year == 2063 && m_mon == 7 && m_day == 30 && one_more_mon[16] == 0) {

one_more_mon[16] = 1;

m_day = 1;

}

else if (m_year == 2066 && m_mon == 5 && m_day == 30 && one_more_mon[17] == 0) {

one_more_mon[17] = 1;

m_day = 1;

}

else if (m_year == 2069 && m_mon == 4 && m_day == 30 && one_more_mon[18] == 0) {

one_more_mon[18] = 1;

m_day = 1;

}

else if (m_year == 2071 && m_mon == 8 && m_day == 30 && one_more_mon[19] == 0) {

one_more_mon[19] = 1;

m_day = 1;

}

else if (m_year == 2074 && m_mon == 6 && m_day == 30 && one_more_mon[20] == 0) {

one_more_mon[20] = 1;

m_day = 1;

}

else if (m_year == 2077 && m_mon == 4 && m_day == 30 && one_more_mon[21] == 0) {

one_more_mon[21] = 1;

m_day = 1;

}

else if (m_year == 2080 && m_mon == 3 && m_day == 30 && one_more_mon[22] == 0) {

one_more_mon[22] = 1;

m_day = 1;

}

else if (m_year == 2082 && m_mon == 7 && m_day == 30 && one_more_mon[23] == 0) {

one_more_mon[23] = 1;

m_day = 1;

}

else if (m_year == 2085 && m_mon == 5 && m_day == 30 && one_more_mon[24] == 0) {

one_more_mon[24] = 1;

m_day = 1;

}

else if (m_year == 2088 && m_mon == 4 && m_day == 30 && one_more_mon[25] == 0) {

one_more_mon[25] = 1;

m_day = 1;

}

else if (m_year == 2090 && m_mon == 8 && m_day == 30 && one_more_mon[26] == 0) {

one_more_mon[26] = 1;

m_day = 1;

}

else if (m_year == 2093 && m_mon == 6 && m_day == 30 && one_more_mon[27] == 0) {

one_more_mon[27] = 1;

m_day = 1;

}

else if (m_year == 2096 && m_mon == 4 && m_day == 30 && one_more_mon[28] == 0) {

one_more_mon[28] = 1;

m_day = 1;

}

else if (m_year == 2099 && m_mon == 3 && m_day == 30 && one_more_mon[29] == 0) {

one_more_mon[29] = 1;

m_day = 1;

}

if (m_day == 29) {

if (m_mon == 2) {

m_mon++;

m_day = 1;

}

}

else if (m_day == 30) {

m_day = 1;

if (m_mon == 12) {

m_mon = 1;

m_year++;

}

else {

m_mon++;

}

}

Mn--;

goto 음력반복;

}

음력반복_끝:

printf("음력은 %d년%d월%d일이고\n오늘의", m_year, m_mon, m_day);


switch (m_day) {

case 1:

no_moon = 1;

break;

case 2:

case 3:

crescent = 1;

break;

case 4:

case 5:

case 6:

case 7:

case 8:

waxing_moon = 1;

break;

case 9:

case 10:

case 11:

case 12:

case 13:

case 14:

case 15:

full_moon = 1;

break;

case 16:

case 17:

case 18:

case 19:

case 20:

case 21:

case 22:

case 23:

last_quarter = 1;

break;

case 24:

case 25:

case 26:

case 27:

case 28:

case 29:

dark_moon = 1;

break;

case 30:

no_moon = 1;

break;

}


if (no_moon == 1) {

printf("달의 위상은 '삭'입니다.\n태양과 함께 뜨고 지므로 관측은 불가능 합니다.\n");

}

else if (crescent == 1) {

printf("달의 위상은 '초승달'입니다.\n뜨는 시각은 '09시'이고\n남중하는 시각으로는 '15시'이고\n지는 시각은 '21시'입니다.\n");

}

else if (waxing_moon == 1) {

printf("달의 위상은 '상현달'입니다.\n뜨는 시각은 '12시'이고\n남중하는 시각으로는 '18시'이고\n지는 시각은 '00시'입니다.\n");

}

else if (full_moon == 1) {

printf("달의 위상은 '보름달'입니다.\n뜨는 시각은 '18시'이고\n남중하는 시각으로는 '00시'이고\n지는 시각은 '06시'입니다.\n");

}

else if (last_quarter == 1) {

printf("달의 위상은 '하현달'입니다.\n뜨는 시각은 '00시'이고\n남중하는 시각으로는 '06시'이고\n지는 시각은 '12시'입니다.\n");

}

else if (dark_moon == 1) {

printf("달의 위상은 '그믐달'입니다.\n뜨는 시각은 '03시'이고\n남중하는 시각으로는 '09시'이고\n지는 시각은 '15시'입니다.\n");

}

printf("종료하시려면 '엔터'를 눌러주세요\n");

Sleep(1000);

getchar();

return 0;

}

해당 달의 위상 조건 같은 경우는 제가 다니는 학교의 학습지를 바탕으로 만들었습니다.


해당 코드는 코드를 정리하지 않았기 때문에 쓰지 않는 코드도 존재합니다.

그렇기 때문에 그 점은 알아주시고 직접 코드를 정리하시는 것은 2차 저작물로 인정하겠습니다.

또한 학교 선생님의 노트북에서 dll이 없다고 하였는데 무슨 dll인지를 확인시켜주시지 않아서 그 점은 직접 dll을 다운로드 하실 필요가 있다고 생각합니다.


아마도 왠만하면 깔려있을 겁니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,