|
빌더첨이얌.. 님이 쓰신 글 :
: 공부하기 시작한지 얼마 안됐거든여.. 그래서 궁금한게 있어서 올려봅니다.. 많은 답변 부탁드립니다.
1, 내가 태어난 생년월일을 만들려면 어케 하는지..
> 님께서 태어난 생년월인은 관련 자료가 많을것입니다. 이곳에 질문하기전에 부모님이나 해당 병원, 동사무소에서 먼저 검색하시는것이...
2. 1월부터 12월까지 달력을 만들어 날짜를 환산할려면 어케 하는지 궁금해여 ..잘하시는 분들은
아주 쉬울것같은데.. 도무지 전 알수가 없어여 조언 부탁 드립니다..
소스가 정말 궁금하구여 설명도 부탁드려여.. 감사합니다^^
>아래 소스는 도스에서 만년달력이랍시고 돌아가는건데요...하두 전에 만들어진거라 설명이..ㅠ.ㅠ
1년 1월 1일이 월요일이던가..그걸로 주욱 셀껍니다....윤년체크하고...
윤년은 해당 년도가 4로 나누어 지는것중 100으로 나누어지는건 제외하면서 400으로 나누어지는건
포함해서....그게 윤년이라는...아...언어능력달려..ㅠ.ㅠ
int calendar(int year,int month)
{
int dates[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int woel[6][7];
int i,j,k=0,na;
long nalsu=0,tot_day;
unsigned munja;
for(i=0;i<6;++i)
for(j=0;j<7;++j)
woel[i][j]=0;
if((year%4==0&&year%100!=0||year%400==0))
dates[2]=29;
else
dates[2]=28;
for(i=1;i<month;++i)
nalsu+=dates[i];
tot_day=(year-1)*365l+(year-1)/4-(year-1)/100+(year-1)/400+nalsu+1;
na=tot_day%7;
for(i=0;i<6;++i)
{
for(j=na;j<7;++j)
{
++k;
if(k>dates[month])
break;
woel[i][j]=k;
}
na=0;
}
gotoxy(1,1);
printf(" %d / %2d \n",year,month);
printf("-----------------------------\n");
printf(" Sun Mon Tue Wed Thu Fri Sat \n");
printf("-----------------------------\n");
for(i=0;i<6;++i)
{
for(j=0;j<7;++j)
{
if(woel[i][j]==0)
printf(" ");
else
printf(" %3d",woel[i][j]);
}
printf("\n");
}
printf("-----------------------------\n");
printf(" Left Key -> Before Year \n");
printf(" Right Key -> Next Year \n");
printf(" Up Key -> Before Month \n");
printf(" Down Key -> Next Month \n");
printf(" ESC Key -> Calendar End \n");
printf("-----------------------------\n");
if((munja=getch())==0)
munja=getch()<<8;
switch(munja)
{
case 0x4800 :year--;
break;
case 0x5000 :year++;
break;
case 0x4b00 :month--;
break;
case 0x4d00 :month++;
break;
case '\x1b' :return(0);
}
if(month==13)
{
year++;
month=1;
}
else if(month==0)
{
year--;
month=12;
}
return(calendar(year,month));
}
|