C++走向远洋——28(项目三,时间类,2)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:time.cpp * 作者:常轩 * 微信公众号:Worldhello * 完成日期:2016年3月30日 * 版本号:V1.1 * 问题描述:时间类 * 程序输入:12:12:12 * 程序输出:见运行结果 */ #include<iostream> using namespace std; class Time { public: void set_time(); void show_time(); void add_a_sec(int n1); void add_a_minute(int n2); void add_a_hour(int n3); private: int sec; int minute; int hour; bool is_time(int,int,int); }; void Time::set_time() { char c1,c2; cout<<"请输入时间(格式hh:mm:ss)"<<endl; while(1) { cin>>hour>>c1>>minute>>c2>>sec; if(c1!=':'||c2!=':') cout<<"格式不正确重输"<<endl; else if(!is_time(hour,minute,sec)) cout<<"时间非法,请重新输入"<<endl; else break; } } void Time::show_time() { cout<<hour<<":"<<minute<<":"<<sec<<endl; } bool Time::is_time(int h,int m,int s) { if(h<0||h>24||m<0||m>60||s<0||s>60) return false; return true; } inline void Time::add_a_sec(int n1) { if(n1+sec>59) { sec=(n1+sec)%60; minute=(n1+sec)/60+minute; if(minute>59) { hour++; minute=0; } } else { sec=sec+n1; } } inline void Time::add_a_minute(int n2) { if(n2+minute>59) { minute=(n2+minute)%60; hour=(n2+minute)/60+hour; if(hour>23) { hour=hour-24; } } else { minute=minute+n2; } } inline void Time::add_a_hour(int n3) { if(n3+hour>23) { hour=(n3+hour)%24; } else { hour=hour+n3; } } int main() { Time t1; t1.set_time(); t1.add_a_sec(1); t1.add_a_minute(11); t1.add_a_hour(33); t1.show_time(); return 0; }
运行结果:
心得:
应注意超过六十秒,六十分钟,二十四时的情况