선생님!!

Twone2004.02.13 20:59조회 수 10댓글 0

    • 글자 크기
/*********************************************************************************/
/* Made By K.N (eu8198@hanmail.net) */
/*Algorythm; input month tab of year 2000, and plus 1 if the ycounter is not 윤년*/
/* and plus 2 if the ycounter is 윤년. */
/*********************************************************************************/
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
// Array // 배열 공간
int month_days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 요일 수
int month_tap_2000[] = {0 ,6 ,2 ,3 ,6 ,1 ,4 ,6 ,2 ,5 ,0 ,3 ,5}; // 2000년의 빈공간 수
// Function // 함수 공간
void namemonth(); // 달의 이름출력
void monthtab(); // 그 달의 공간계산
// integer // 정수변수 공간
int y, m, c; // year,month,counter의 약자
int plusc; // 그 달의 공간만큼 c에 플러스

void main(void)
{
cout << "Input year ";
cin >> y;
cout << "Input month ";
cin >> m;
if((y%4)==0) // 윤년 계산
{
if((y%100)==0)
{
if((y%400)==0)
month_days[2]=29;
}
else month_days[2] = 29;
}
system("cls"); // 입력부분 삭제
cout <<" " << y << " year ";
namemonth(); // 1 -> January .. 이런식으로 바꿔주는 함수
cout << "Sun Mon Tue Wed Thu Fri Sat"<<endl;
monthtab();
c = c+plusc;
for(int i=1;i<=month_days[m];i++)
{
if(i<10)cout << " "; // 자릿수 맞추기
cout <<i << " "; // 일정공간 띄우기
c++;
if(c%7==0)cout << "\n"; // 7로 나눠서 줄맞추기
}
cout << "\n";
//cout << dal[m];
//getch();
}
void namemonth()
{
switch(m)
{
case 1:cout << "January"<<endl; break;
case 2:cout << "February"<<endl; break;
case 3:cout << "March"<<endl; break;
case 4:cout << "April"<<endl; break;
case 5:cout << "May"<<endl; break;
case 6:cout << "June"<<endl; break;
case 7:cout << "July"<<endl; break;
case 8:cout << "August"<<endl; break;
case 9:cout << "September"<<endl; break;
case 10:cout << "October"<<endl; break;
case 11:cout << "November"<<endl; break;
case 12:cout << "December"<<endl; break;
default: cout << "error! Try again!!"; exit(1);
}
}
void monthtab()
{
int iy,ic;
iy = 2000;
plusc = month_tap_2000[m];
if(y>2000)
{
while(iy != y){
if((iy%4)==0)
{
if((iy%100)==0)
{
if((iy%400)==0)
{
plusc+=2;
}
else
{
plusc+=1;
}
}
else
{
plusc+=2;
}
}
else
{
plusc+=1;
}
iy++;
}
}
else if(y == 2000){;}
else if(y<2000)
{
while(iy != y){
if((iy%4)==0)
{
if((iy%100)==0)
{
if((iy%400)==0)
{
plusc-=2;
}
else
{
plusc-=1;
}
}
else
{
plusc-=2;
}
}
else
{
plusc-=1;
}
iy--;
}
}
if(plusc>=7) plusc%=7;

ic = plusc;
if(plusc<0)
{
ic = plusc * -1;
}
if(ic>=7)ic%=7;
for(int i = 0;i < ic; i++)
{
cout << " ";
}
}

만년달력을 짜봤는데,

2005년 3월부터는 한개씩 밀리더군요;

2005년 3월이 화요일부터 시작하는데 수요일부터 시작하고,

그 이후로 한개씩 밀리네요;

2000 빈공간 타입은 제대로 됐고,

2005년 2월까지는 제대로 나와요;

2000년 전은 아직 프로그래밍 안해서 제대로 안뜨고요,

어떻게 됀건지 도와주세요!
Twone (비회원)
    • 글자 크기
(by 풍매화) 방명록입니다 (by twone)

댓글 달기 WYSIWYG 사용

글쓴이 비밀번호
twone
2003.12.05 조회 13
뷁뷰뫲
2003.12.03 조회 13
지은
2003.09.17 조회 13
구용호
2003.12.10 조회 12
Secret.
2003.11.15 조회 12
관리자
2003.09.19 조회 12
관리자
2003.09.19 조회 12
숭쓰~♡
2003.09.14 조회 12
정복이요^^
2003.09.13 조회 12
twone
2004.02.11 조회 11
뷁뷰뫲
2003.12.10 조회 11
관리자
2003.12.10 조회 11
뷁뷰뫲
2003.12.03 조회 11
뷁뷰뫲
2003.12.02 조회 11
관리자
2003.11.04 조회 11
의문의 K군
2003.11.03 조회 11
이태영
2003.11.01 조회 11
김대성
2003.10.01 조회 11
풍매화
2006.06.10 조회 10
/*********************************************************************************/ /* Made By K.N (eu8198@hanmail.net) */ /*Algorythm; input month tab of year 2000, and plus 1 if the ycounter is not 윤년*/ /* and plus 2 if the ycounter is 윤년. */ /***************************************************...
Twone
2004.02.13 조회 10
이전 1 2 3 4 5 6 7 8 9 10... 86다음
첨부 (0)