第五週專案3——(2)時間類
阿新 • • 發佈:2019-02-10
///// 2016.3.31 修改 /////
問題及程式碼:
/* * Copyright (c) 2016,煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:main.cpp * 作 者:趙志君 * 完成日期:2016年3月31日 * 版 本 號:v1.0 * * 問題描述:為一個時間類增加功能 */ #include<iostream> using namespace std; class Time { public: void set_time(); void show_time(); void add_seconds(int); void add_minute(int); void add_hour(int); private: bool is_time(int ,int ,int ); int hour; int minute; int sec; }; void Time::set_time() { char c1,c2; cout<<"請輸入時間(格式 hh:mm:ss)"; 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; } void Time::add_hour(int n) { hour+=n; if(hour>23) hour=hour-24; } void Time::add_minute(int n) { minute+=n; if(minute>59) { add_hour(minute/60); minute=minute%60; } } void Time::add_seconds(int n) { sec=sec+n; if(sec>59) { add_minute(sec/60); sec=sec%60; } } int main() { Time t1; t1.set_time(); t1.show_time(); t1.add_hour(4); t1.add_minute(50); t1.add_seconds(60); t1.show_time(); return 0; }
執行結果:
學習心得:第一做出的程式碼,有著許多嚴重的錯誤,比如:時間沒有24時60分60秒這幾個值,還有就是增加的值可能會大於24大於60,讓下一個數量級增加的可能不只是1而已。
/////////////////////////////////////////////////////////////// / 以下為錯誤程式碼 / ///////////////////////////////////////////////////////////////
問題及程式碼:
/* * Copyright (c) 2016,煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:main.cpp * 作 者:趙志君 * 完成日期:2016年3月28日 * 版 本 號:v1.0 * * 問題描述:為一個時間類增加功能 */ #include<iostream> using namespace std; class Time { public: void set_time(); void show_time(); void add_seconds(int); void add_minute(int); void add_hour(int); private: bool is_time(int ,int ,int ); int hour; int minute; int sec; }; void Time::set_time() { char c1,c2; cout<<"請輸入時間(格式 hh:mm:ss)"; 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; } void Time::add_hour(int n) { hour+=n; if(hour>24) hour=hour-24; } void Time::add_minute(int n) { minute+=n; if(minute>60) { minute=minute-60; hour++; } } void Time::add_seconds(int n) { sec=sec+n; if(sec>60) { sec=sec-60; minute++; } } int main() { Time t1; t1.set_time(); t1.show_time(); t1.add_hour(4); t1.add_minute(5); t1.add_seconds(6); t1.show_time(); return 0; }
執行結果:
學習心得:注意時間的超限問題