中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
#include<fstream>
#include<iostream>
using namespace std;
class Date
{
public:
void date();
void get_date();
private:
int year;
int month;
int day;
int days;
int i;
};
void Date::date()
{
days=0;
int data[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(year%400==0||(year%4==0&&year%100!=0))
data[2]+=1;
for(i=2010;i<year;i++)
{
if(i%400==0||(i%4==0&&i%100!=0))
days+=366;
else
days+=365;
}
for(i=1;i<month;i++)
{
days+=data[i];
}
days+=day;
}
void Date::get_date ()
{
ifstream infile("in.txt");
if(!infile)
{
cerr<<"打开错误!"<<endl;
exit(1);
}
infile>>year>>month>>day;
cout<<year<<" "<<month<<" "<<day<<endl;
while(year<2010)
{
cout<<"请输入正确日期!"<<endl<<"请重新输入:"<<endl;
cin>>year>>month>>day;
}
Date::date ();
ofstream outfile("out.txt");
if(!outfile)
{
cerr<<"打开错误!"<<endl;
exit(1);
}
if(days%5>0&&days%5<4)
{
cout<<year<<"年"<<month<<"月"<<day<<"日,他在打鱼。"<<endl;
outfile<<year<<"年"<<month<<"月"<<day<<"日,他在打鱼。"<<endl;
}
else
{
cout<<year<<"年"<<month<<"月"<<day<<"日,他在晒网。"<<endl;
outfile<<year<<"年"<<month<<"月"<<day<<"日,他在晒网。"<<endl;
}
infile.close();
outfile.close();
}
int main()
{
Date d;
cout<<"从2010年1月1日起开始“三天打鱼两天晒网”"<<endl;
d.get_date();
return 0;
}