時間換算


定義一個時間類time,內有數據成員hour,minute,second,另有成員函數:構造函數用於初始化數據成員,輸出函數,運算符重載+(加號),。編寫主函數:創建時間對象,再輸入秒數 n,通過運算符重載+(減號),計算該時間再過 n 秒后的時間值,時間的表示形式為時:分:秒,超過 24 時從 0 時重新開始計時。

 

 

 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 
 5 class Time              //定義Time類
 6 {
 7 private:
 8     int hour,minute,second;     //私有變量hour,minute,second
 9 public:
10     friend Time operator + (Time &T1,Time &T2);     //友元函數重載 + 
11     friend Time operator - (Time &T1,Time &T2);     //友元函數重載 - 
12     friend istream& operator >> (istream &input,Time &T);   //友元函數重載 >> 輸入流
13     friend ostream& operator << (ostream &output,Time &T);  //友元函數重載 << 輸出流
14     Time(){};       //默認構造函數
15     Time(int h,int m,int s):hour(h),minute(m),second(s){};  //構造函數
16     bool getEnd(void);  //檢查是否為end
17 };
18 
19 Time operator + (Time &T1,Time &T2)
20 {
21     Time T(0,0,0);      //新建對象用於函數的返回值
22     if(T2.hour<=0&&T2.minute<=0&&T2.second<=0)  //如果T2為負
23     {
24         Time T2_tmp(0,0,0);
25         T2_tmp.hour=abs(T2.hour),T2_tmp.minute=abs(T2.minute),T2_tmp.second=abs(T2.second);
26         T=T1-T2_tmp;
27         return T;
28     }
29     T.second=(T1.second+T2.second<60)?(T1.second+T2.second):(T.minute++,T1.second+T2.second-60);        //時分秒的相加
30     T.minute=(T1.minute+T2.minute+T.minute<60)?(T.minute+T1.minute+T2.minute):(T.hour++,T.minute+T1.minute+T2.minute-60);
31     T.hour=(T1.hour+T2.hour+T.hour<24)?(T.hour+T1.hour+T2.hour):(T.hour-=24,T.hour+T1.hour+T2.hour);
32     return T;
33 }
34 
35 Time operator - (Time &T1,Time &T2)
36 {
37     Time T(0,0,0);
38     T.second=(T1.second>=T2.second)?(T1.second-T2.second):(T.minute--,T1.second-T2.second+60);   //時分秒的相加
39     T.minute=(T1.minute+T.minute>=T2.minute)?(T1.minute+T.minute-T2.minute):(T.hour--,T1.minute+T.minute-T2.minute+60);
40     T.hour=(T1.hour+T.hour>=T2.hour)?(T1.hour+T.hour-T2.hour):(T.hour+=24,T1.hour+T.hour-T2.hour);
41     return T;
42 }
43 
44 istream& operator >> (istream &input,Time &T)   //重載Time類的輸入流
45 {
46     input>>T.hour>>T.minute>>T.second;
47     return input;       //返回值 輸入流類型變量
48 }
49 
50 ostream& operator << (ostream &output,Time &T)  //重載Time類的輸出流
51 {
52     output<<"time:"<<T.hour<<":"<<T.minute<<":"<<T.second;
53     return output;      //返回值 輸出流類型變量
54 }
55 
56 bool Time::getEnd(void)
57 {
58     if(!hour&&!minute&&!second) return false;
59     else return true;
60 }
61 
62 int main()
63 {
64     Time T;
65     int S;
66     cin>>T>>S;  //輸入Time T(調用Time類的輸入流)和int S
67     while(T.getEnd()||S)    //判斷是否為末尾
68     {
69         int hh,mm,ss;
70         ss=S%60,mm=((S-ss)/60)%60,hh=((((S-ss)/60)-mm)/60)%24;  //將輸入的秒轉化為Time類
71         Time T_tmp(hh,mm,ss);
72         T=T+T_tmp;
73         cout<<T<<endl;      //輸出Time T(調用Time類的輸出流)
74         cin>>T>>S;
75     }
76     return 0;
77 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM