第5周專案2—時間類
阿新 • • 發佈:2019-02-06
/* 02.*煙臺大學計算機學院 03.*檔名稱:xiangmu2.cpp 04.*作 者:李亞輝 05.*完成日期:2016年5月24日 06.*版 本 號:vc++6.0 07.* 08.*問題描述:編寫並呼叫成員函式,分別使時間進行增加 09.*輸入描述: 現在的時間(時、分、秒) 10.*程式輸出:經過呼叫成員函式後的時間 */ #include<iostream> using namespace std; class Time { public: void set_time(); void show_time(); inline void add_a_sec();//增加1秒 inline void add_a_minute();//增加一分鐘 inline void add_an_hour();//增加一小時 void add_seconds(int);//增加n秒 void add_minutes(int );//增加n分鐘 void add_hours(int );//增加n小時 private: bool is_time(int ,int ,int );//私有的成員函式 int hour; int minute; int sec; }; void Time::set_time() { char c1,c2; cout<<"請輸入時間"; 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()//增加1秒鐘 { ++sec;//sec+1後在呼叫 if(sec>59)//是否超過合理範圍 { sec=0;//因為增加一秒鐘,使分鐘發生變化 add_a_minute();//增加一分鐘是否會引起小時的變化,在該函式中解決 } } inline void Time:: add_a_minute()//增加一分鐘 { ++minute; if(minute>59) { minute=0; add_an_hour(); } } inline void Time::add_an_hour()//增加一小時 { ++hour; if(hour>23) hour=0;//到第2天了 } void Time::add_seconds(int n)//增加n秒 { sec+=n;//直接加上增加的秒數 if(sec>59) { add_minutes(sec/60); sec%=60; } } void Time::add_minutes(int n)//增加n分鐘 { minute+=n; if(minute>59) { add_hours(minute/60); minute%=60; } } void Time::add_hours(int n)//增加n小時 { hour+=n; if(hour>23) hour%=24;//此程式不涉及日期 } int main() { Time t1; Time &t2=t1; t1.set_time(); cout<<"現在的時間是:"; t2.show_time(); t1.add_a_sec();//增加1秒鐘 cout<<"增加1秒鐘後:"; t1.show_time(); t1.add_a_minute();//增加1分鐘 cout<<"增加1小時後:"; t2.show_time(); t1.add_an_hour();//增加1小時 cout<<"增加1小時後:"; t1.show_time(); t1.add_an_hour();//增加40秒鐘 cout<<"增加40秒後:"; t1.show_time(); t1.add_minutes(127);//增加127分鐘 cout<<"增加127分鐘後:"; t1.show_time(); t1.add_hours(8);//增加8小時 cout<<"增加8小時後:"; t1.show_time(); return 0; } /*學習心得: 我認為這個專案,最難的是分辨增加一秒或一分後,是否會引起時間和分鐘的變化,這個過程在編寫時需要自己條理清晰,否則很難做出正確的編寫, 同時也說明,變成最重要的是思維模式,是演算法,不是他的結構,每一種語言都有他特有的結構模式,然而演算法是永恆不變的,總算明白,為什麼老師 經常說演算法是程式的靈魂,演算法確實是一個程式的核心思維,不論這個程式是使用什麼語言編寫的,他的核心思維就在那裡,演算法就在那裡,比的就是 誰的演算法更加精妙,更能提高效率。 */