第十一章编程练习(4)

本文介绍了一个用于时间操作的C++类实现,包括时间的加法、减法、乘法以及输出功能。通过重载运算符,简化了时间计算过程,并展示了如何在控制台中显示时间信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

list.h

# pragma once
# ifndef list_H_
# define list_H_
#include <iostream>
class Time {
private:
 int hours;
 int minutes;
public:
 Time();
 Time(int h, int m);
 void AddMin(int m);
 void AddHt(int h);
 void Reset(int h, int m);
 Time operator *(double m)const;
 friend const Time operator +(const Time & t, const Time & s);//重载加法
 friend const Time operator -(const Time & t, const Time & s);//重载减法
 friend const Time operator *(double m, const Time & t)
 {
  return t*m;
 }//重载乘法
 friend std::ostream & operator <<(std::ostream & os, const Time & t);
};
# endif

function.cpp

#include "list.h"
Time::Time()
{
 hours = minutes = 0;
}
Time::Time(int h, int m)
{
 hours = h;
 minutes = m;
}
void Time::AddMin(int m)
{
 minutes += m;
 hours += minutes / 60;
 minutes %= m;
}
void Time::AddHt(int h)
{
 hours += h;
}
void Time::Reset(int h, int m)
{
 hours = h;
 minutes = m;
}
const Time operator+(const Time & t, const Time & s)
{
 Time sum;
 sum.minutes = s.minutes + t.minutes;
 sum.hours = s.hours + t.hours + sum.minutes / 60;
 sum.minutes %= 60;
 return sum;
}
const Time operator-(const Time & t, const Time & s)
{
 Time diff;
 int tot2, tot1;
 tot1 = t.minutes + 60 * t.hours;
 tot2 = s.minutes + 60 * s.hours;
 diff.minutes = (tot1 - tot2)%60;
 diff.hours = (tot1 - tot2) / 60;
 return diff;
}
Time Time:: operator*(double m)const
{
 Time result;
 long totalminutes = hours*m * 60 + minutes*m;
 result.hours = totalminutes / 60;
 result.minutes = totalminutes % 60;
 return result;
}
std::ostream & operator<<(std::ostream & os, const Time & t)
{
 os << t.hours << " hours " << t.minutes << " minutes ";
 return os;
}

main.cpp

#include "list.h"
#include <iostream>
#include <cstdlib>
int main()
{
	using std::cout;
	using std::endl;
	Time aida(3, 35);
	Time tosca(2, 48);
	Time temp;
	cout << "Aida and Tosca:\n";
	cout << aida << "; " << tosca << endl;
	temp = aida + tosca;
	cout << "Aida + Tosca: " << temp << endl;
	temp = aida*1.17;
	cout << "Aida * 1.17: " << temp << endl;
	cout << "10 * Tosca: " << 10.0*tosca << endl;
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值