AcWing 668. 游戏时间2
原题链接
中等
作者:
Overmind
,
2021-02-06 22:15:50
,
所有人可见
,
阅读 273
#include <iostream>
using namespace std;
//时段类
class Time{
public:
Time(int a=0,int b=0):hour(a),minute(b){}
void display();
friend ostream & operator <<(ostream &,Time &);
private:
int hour;
int minute;
};
void Time::display(){
cout<<"O JOGO DUROU "<<hour<<" HORA(S) E "<<minute<<" MINUTO(S)"<<endl;
}
ostream & operator <<(ostream &output,Time &a){
output<<"O JOGO DUROU "<<a.hour<<" HORA(S) E "<<a.minute<<" MINUTO(S)";
return output;
}
//时刻类
class Clock{
public:
Clock(int a=0,int b=0):hour(a),minute(b){}
friend Time lasting(Clock &,Clock &); //通过时刻判断时间长度
friend istream & operator >>(istream &,Clock &);
private:
int hour;
int minute;
};
istream & operator >>(istream &input,Clock &a){
input>>a.hour>>a.minute;
return input;
}
Time lasting(Clock &a,Clock &b){
int x,y;
if(a.hour > b.hour) x = b.hour - a.hour + 24; //注意不在分隔在两天的时刻的情况
if(a.hour < b.hour) x = b.hour - a.hour;
if(a.hour == b.hour && a.minute == b.minute) x = 24;
if(a.hour == b.hour && a.minute < b.minute) x = 0;
if(a.hour == b.hour && a.minute > b.minute) x = 24;
if(a.minute > b.minute){
y = b.minute - a.minute + 60;
x -= 1; //对 分钟 加减注意对 小时 的进位
}
if(a.minute < b.minute) y = b.minute - a.minute;
if(a.minute == b.minute) y = 0;
return Time(x,y);
}
int main(){
Clock a,b;
Time c;
cin>>a>>b;
c = lasting(a,b);
cout<<c<<endl;
//c.display();
return 0;
}