// main.cpp
// 打鱼晒网问题
//
// Created by Angel on 16/1/27.
//
#include
#include
using namespace std;
//function
//是否为闰年
long int judgement1(int);
//是否为大月
long int judgement2(int,bool);
//计算日子
int judgement3(int);
//闰年
bool lunar(int);
//计算
void display(long int);
#define YEAR 1993
#define MONTH 6
#define DAY 9
int main()
{
int year,month,day;
long int count[3];
bool t;
long int total;
cout<<"Count the date from"<<YEAR<<'/'<<MONTH<<'/'<<DAY<<"to the date you want."<<endl;
cout<<"【EOF】to quit."<<endl;
while(cin.get()!=EOF){
cout<<"Year: "<<endl;
cin>>year;
count[0]=judgement1(year);
t=lunar(year);
cout<<"Month: "<<endl;
cin>>month;
count[1]=judgement2(month,t);
cout<<"Day: "<<endl;
cin>>day;
count[2]=day;
//多余的日子
total=count[0]+count[1]+count[2]-judgement2(MONTH,lunar(YEAR))-(DAY-1);
cout<<"Total: "<<total<<endl;
cout<<"计算这一天是在打渔还是筛网:"<<endl;
display(total);
cin.clear();
cin.get();
}
}
//计算年份
long int judgement1(int a){
a=a-YEAR;
long int ye=0;
for(int i=0;i
if(lunar(YEAR+i))
ye=ye+366;
else
ye=ye+365;
return ye;
}
//判断闰年
bool lunar(int yea){
if( yea%4 == 0){
if( yea0 == 0){
if( yea@0 ==0)
return true;
else
return false;
}
else
return true;
}
else
return false;
}
//计算月份
long int judgement2(int a,bool t){
int day=0;
int b=31,s=30;
switch(a){
case 12:
day=day+s;
case 11:
day=day+b;
case 10:
day=day+s;
case 9:
day=day+b;
case 8:
day+=b;
case 7:
day+=s;
case 6:
day+=b;
case 5:
day+=s;
case 4:
day+=b;
case 3:
if(t)
day+=29;
else
day+=28;
case 2:
day+=b;
case 1:
day+=0;break;
default:
cout<<"WRONG.";break;
}
return day;
}
//展示晒网打渔
void display(long int a){
a=a%5;
switch(a){
case 0:
case 4:
cout<<"晒网"<<endl;break;
case 2:
case 3:
case 1:
cout<<"打渔"<<endl;break;
}return;
}