선생님!!

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 Twone) (by Twone)

댓글 달기 WYSIWYG 사용

글쓴이 비밀번호
TWONE ; 5000Point
2004.10.09 조회 0
Twone
2004.03.02 조회 0
Twone
2004.03.02 조회 0
Twone
2004.03.02 조회 0
Twone
2004.03.02 조회 2
Twone
2004.03.02 조회 3
Twone
2004.03.02 조회 0
Twone
2004.03.02 조회 0
Twone
2004.03.02 조회 0
Twone
2004.03.02 조회 0
Twone
2004.03.01 조회 0
twone
2004.03.01 조회 2
Twone
2004.03.01 조회 0
Twone
2004.02.27 조회 1
Twone
2004.03.01 조회 0
Twone
2004.02.27 조회 1
SP
2004.02.25 조회 3
Twone
2004.02.27 조회 1
/*********************************************************************************/ /* 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
Twone
2004.02.14 조회 8
이전 1 ... 73 74 75 76 77 78 79 80 81 82... 86다음
첨부 (0)