오랜만에 프로그래밍 포스팅이니
오늘은 특별히 소스부터
#include <stdio.h>
#include <stdlib.h>

int calc(int,int,int,int);

int main()
{
	int a,b,c,d;
	int year;
	char buf[5],buf2[3];
	char *day[7]={"일","월","화","수","목","금","토"};

	printf("날짜: ");
	scanf("%4d%2d%2d",&year,&c,&d);
	printf("%d년 %d월 %d일",year,c,d);
	if(c<=2)
	{
		year-=1;
		c+=12;
	}

	a=year/100;
	b=year%100;

	printf("\n%s요일\n",day[calc(a,b,c,d)]);
	printf("%d %d %d %d",a,b,c,d);
	system("PAUSE");
	return 0;
}

int calc(a,b,c,d)
{
	return ((21*a/4)+(5*b/4)+(26*(c+1)/10)+d-1)%7;
}
아 내가 봐도...

제라의 공식은
((21*a/4)+(5*b/4)+(26*(c+1)/10)+d-1)%7;

a는 연도의 앞 두자리 b는 연도의 뒤 2자리.
c는 월, d는 일.

예를 들어 2007년 07월 07일은
a=20,b=7,c=7,d=7;
참쉽죠?

그리고 하나 더해야될 게 있어요.
c(월)가 1이나 2일경우 연도는 -1을 하고 1은 13,  2는 14로 바꿔줘야해요

예를들면
2007년 01월 01일은
a=20,b=6,c=13,d=1;
참쉽죠?

위 공식을 사용해 나온 값에 따라 요일을 정합니다.
0=일요일
1=월요일
2=화요일
3=수요일
4=목요일
5=금요일
6=토요일

이제 위에 있는 소스를 보시면 다 이해가 가실거에요.
사용자 삽입 이미지


ps.이걸로 달력도 출력하는건가?

이 글이 유익하다면 (굽신굽신) ->

Trackback Address >> http://zfanta.com/trackback/323 관련글 쓰기

  1. 모아 2008/02/08 02:14  address  modify / delete  reply

    char *day[7]={"일","월","화","수","목","금","토"};
    이부분은 char* day[] = {"일","월","화","수","목","금","토"};
    으로 바꾸시는게 더 좋아요~ 결과는 똑같지만, 나중에 명박요일 이런게 추가되면, 앞의 7을 바꾸지 않아도 되니깐요 ^^

  2. Favicon of http://eileenme.tistory.com BlogIcon eileenme 2008/02/15 11:08  address  modify / delete  reply

    안녕하세요,환타님~
    제 블로그에 댓글 남기셨길래 놀러왔답니다.
    뭔지 모르지만 포스트가 어마,,;; 워낙에 웹서핑만 겨우 하는지라...
    좋은 글 보러 또 들릴께요~ 가끔 저의 보잘것없는 블로그도 방문해 주심
    감사 할꺼에요^^; 즐거운 하루 되세요!

  3. Favicon of http://bluenlive.net BlogIcon bluenlive 2008/02/15 17:57  address  modify / delete  reply

    이야! 신기하다...
    잘 봤습니다.

    예전에 이거 계산한다고 삽질했던 기억이 있는데...
    (1950년 정도부터 시작해서 윤년이 아니면 1 더하고, 윤년이면 2 더하는 클래식한(?) 방법...)

    •  address  modify / delete 2008/02/15 18:03 Favicon of http://zfanta.com BlogIcon 환타

      클래식한 방법이 가장 좋죠 ㅎㅎ
      위 공식을 사용해서 저도 달력 출력하는 프로그램 만들어볼 생각이에요.
      제라의 공식이 먹히는 그레고리력(1582년 10월 15일)부터 쭈욱~~~

  4. 2인자 2010/02/18 03:01  address  modify / delete  reply

    http://navercast.naver.com/science/math/2047
    우연히 서핑하다 보고 댓글 남깁니다.
    요일 구하는 여러 공식이 있나보군요..