/*
*Corpyright (c)2013,烟台大学计算机学院
*All right reseved.
*作者:z张梦佳
*完成日期:2014年4月8日
*版本号:v1.0
*输入描述:
*问题描述:!
*程序输出:
*问题分析:
*算法设计:
*/
#include <iostream>
using namespace std;
class Date; //对Date类的提前引用声明
class Time
{
public:
Time(int a,int b,int c)//构造函数
{
hour=a;
minute=b;
sec=c;
}
void add_a_second(Date &); //增加1秒,1秒后可能会到了下一天,乃到下一月、下一年
void display(Date &); //显示时间,格式:月/日/年 时:分:秒
private:
int hour;
int minute;
int sec;
};
class Date
{
public:
Date(int a,int b,int c)
{
month=a;
day=b;
year=c;
}
friend class Time; //Time为Date的友元类
private:
int month;
int day;
int year;
};
int duiyucuo(int);
void Time::display(Date &a)
{
cout<<a.month<<"月"<<a.day<<"日"<<a.year<<"年"<<hour<<":"<<minute<<":"<<sec<<endl;
}
void Time::add_a_second(Date &a)
{
int num2;
if(a.month==1||a.month==3||a.month==5||a.month==7||a.month==8||a.month==10||a.month==12)
num2=31;
else if(a.month==4||a.month==6||a.month==9||a.month==11)
num2=30;
else
{
if((a.year%4==0&&a.year%100!=0)||a.year%400==0)
num2=29;
else
num2=28;
}
int num1=0;
sec=sec+1;
num1=sec/60;
sec=sec%60;
if(num1>0)
{
minute=minute+num1;
num1=minute/60;
minute=minute%60;
if(num1>0)
{
hour=hour+num1;
num1=hour/24;
hour=hour%24;
if(num1>0)
{
a.day=a.day+num1;
num1=a.day/num2;
a.day=a.day%num2;
if(num1>0)
a.year=a.year+num1;
}
}
}
}
int main( )
{
Time t1(23,59,32);
Date d1(12,31,2013); //测试时,再试试Date d1(2,28,2013)会如何
for(int i=0; i<=100; i++)
{
t1.add_a_second(d1);
t1.display(d1);
}
return 0;
}
感悟
时间增加的函数本来可以写的更简单,但是问哦感觉这样写要改动成手输入时间的函数方便些!