设计一个多功能的MyTime类

题目内容:

定义一个带重载构造函数的日期类Date,数据成员有年、月、日;成员函数包括:一个带参数的构造函数Date(int,int,int),一个不带参数的构造函数(设置日期为1900年1月1日),一个按“年-月-日”格式显示日期的函数,一个对数据成员赋值的函数void
init(int,int,int)。

主函数中对类的测试要求:
1.
分别使用两个不同的重载构造函数创建两个日期类对象(必须为d1,d2,d2初始值为2100-12-12);
2.
按“年-月-日”格式分别显示两个对象的值;
3. 输入数据,用init函数为d1赋值;
2.按“年-月-日”格式显示对象d1的值;。
输入格式:
给d1赋值的数据

输出格式:
d1的默认值d2的初始值d1赋值后的值

输入样例:
2011 4 29
输出样例:
1900-1-1
2100-12-12
2011-4-29

#include <iostream>
#include <cmath>
#include<iomanip>
using namespace std;
class MyTime
{
 int hour;
 int min;
 int sec;
 int seccha(int h,int m,int s);
 public:
  MyTime(){
   hour = 0;
   min = 0;
   sec = 0;
  }
  MyTime(int h,int m,int s)
  {
   (h>=0 && h<=12)?  hour = h:hour = 0;
   (m>=0 && m<=60)?  min = m:min = 0;
   (s>=0 && s<=60)?  sec = s:sec = 0;
  }
  void inite(int h,int m,int s)
  {
   (h>=0 && h<=12)?  hour = h:hour = 0;
   (m>=0 && m<=60)?  min = m:min = 0;
   (s>=0 && s<=60)?  sec = s:sec = 0;
  }
  void out_12()
  {
   int h1;
   if(hour>=12) {
   h1 = hour%12;
   cout<<setw(2)<<setfill('0')<<h1<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<" "<<"PM"<<endl; 
   }else
   {
   cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<" "<<"AM"<<endl;
   }
  }
  void out_24()
  {
   cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<endl; 
  }
  void Addtime(int h, int m, int s)
  {
   sec = sec + s;
   if(sec >=60)  
   {
    min = min + sec/60;
    sec = sec % 60;
   }
   min = min + m;
   if(min >=60)  
   {
    hour = hour + min/60;
    min = min % 60;
   }
   hour = (hour + h) % 24;
   
  }
  void decreatime(int h, int m, int s)
  {
   int sum1 = seccha(h,m,s);
   int sum2 = seccha(hour,min,sec);
   int sum = abs(sum1 - sum2);
   int h1,m1,s1;
   hour = sum/3600;
   min = (sum%3600)/60;
   sec = sum%60;
  }
};
 int MyTime :: seccha(int h,int m,int s)
 {
  return h*3600 + m*60 + s;
 }
int main()
{
 int hour,min,sec,h1,m1,s1;
 cin>>hour>>min>>sec>>h1>>m1>>s1;
 MyTime t1,t2(8,10,30);
 t1.out_12();
 t1.out_24();
 t2.out_12();
 t2.out_24();
 t1.inite(hour,min,sec);
 t1.Addtime(h1,m1,s1);
 t1.out_12();
 t1.out_24();
 t2.decreatime(h1,m1,s1);
 t2.out_12();
 t2.out_24();
 return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值