运算符重载

题目描述:定义一个时间类,小时和分钟是其两个私有成员数据。输入一个起始时间和一个结束时间(起始时间早于结束时间),通过运算符重载-(减号),计算这两个时间相隔多少分钟。说明:这两个时间在同一天之内,且采用24小时计时分式,即从00:00-23:59。

   输入格式: 测试输入包含若干测试用例,每个测试用例占一行。每个测试用例包括四个数,用空格间隔,每个数都是由两位数字组成,第一个数和第二个数分别表示起始时间的小时和分钟,第三个数和第四个数分别表示结束时间的小时和分钟。当读入一个测试用例是00 00 00 00时输入结束,相应的结果不要输出。

   输出格式:对每个测试用例输出一行。输出一个数即可,表示两者之间间隔的分钟数。

   输入样例:

   12 11 12 58

   00 13 16 00

   09 07 23 59

   00 00 00 00

   输出样例:

   47

   947

   892

 1 #include<iostream>
 2 using namespace std;
 3 class Time {
 4 private:
 5     int hour;
 6     int minute;
 7 public:
 8     Time(int h = 00, int m = 00) {
 9       hour = h;
10      minute = m;
11     }
12     int friend operator- (Time p, Time q);
13 };
14 int operator- (Time q, Time p) {
15      int c = 0;
16      int d = 0;
17       if (p.minute < q.minute|| p.minute == q.minute) {
18       d = q.hour - p.hour;
19       c = q.minute - p.minute + 60 * d;
20        return c;
21        }
22         else {
23      d = q.hour - p.hour - 1;
24       c = 60 + q.minute - p.minute + 60 * d;
25         return c;
26     
27     }
28 }
29 int main() {
30     int a, b, c, d;
31     while (cin >> a >> b >> c >> d) {
32 if (a == 00 && b == 00 && c == 00 && d == 00)
33 break;
34 int difference;
35 Time p1(a, b);
36 Time p2(c, d);
37 difference = p2 - p1;
38 cout << difference << endl;
39 
40 
41 
42     }
43     return 0;
44 }

 

posted @ 2023-05-11 23:50  刘冰宇  阅读(38)  评论(0)    收藏  举报