c++:用函数求输入两个时间从而输出两时间差

c++:用函数求输入两个时间从而输出两时间差... c++:用函数求输入两个时间从而输出两时间差 展开
 我来答
Edward_Tsui00
推荐于2018-04-08 · TA获得超过113个赞
知道答主
回答量:52
采纳率:100%
帮助的人:28.3万
展开全部
#include <bits/stdc++.h>

using std::endl;
using std::cin;
using std::cout;
using std::istream;
using std::ostream;
using std::sprintf;
using std::strcat;
using std::strcpy;

typedef char* Cstring; // For the function "toCstring" and "tostring"
typedef char* charp; // Pointer to char
typedef int* intp; // Pointer to int
class etime // The Main class 'etime'
{
private:
int hr, min, sec; // Three Elements of a clock...
void pl() // It can make 1:0:60 into 1:1:0
{
min += sec / 60;
sec %= 60;
hr += min / 60;
min %= 60;
}
public:
etime(int h = 0, int m = 0, int s = 0) :hr(h), min(m), sec(s) { this->pl(); } // Constructor function
inline int getHr() { return hr; } // Get a int, the element "hr"
inline int getMin() { return min; } // ... . .... ... ....... "min"
inline int getSec() { return sec; } // ... . .... ... ....... "sec"
inline etime getTime() { return *this; }// Get the FULL time
inline void reset() { hr=min=sec=0; }
void addHr(const int r) { hr += r;this->pl(); }
void addMin(const int r) { min += r;this->pl(); }
void addSec(const int r) { sec += r;this->pl(); }
void addTime(const etime &t) { hr += t.hr;min += t.min;sec += t.sec;this->pl(); }
void setHr(const int r) { hr=r;this->pl(); }
void setMin(const int r) { min=r;this->pl(); }
void setSec(const int r) { sec=r;this->pl(); }
//OPERATORS
void operator++() { ++sec;this->pl(); }
void operator++(int) { sec++;this->pl(); }
void operator--() { --sec;this->pl(); }
void operator--(int) { sec--;this->pl(); }
friend istream &operator>>(istream &Scanner, etime &t)
{
Scanner >> t.hr >> t.min >> t.sec;
return Scanner;
}
friend ostream &operator<<(ostream &Printer, const etime &t)
{
Printer << t.hr << ':' << t.min << ':' << t.sec;
return Printer;
}
etime operator+(const etime &t)
{
etime t2;
t2.hr = t.hr + this->hr;
t2.min = t.min + this->min;
t2.sec = t.sec + this->sec;
t2.pl();
return t2;
}
void operator+=(const etime &t)
{
this->hr += t.hr;
this->min += t.min;
this->sec += t.sec;
this->pl();
}
etime operator-(const etime &t)
{
etime t2;
t2.hr = t.hr - this->hr;
t2.min = t.min - this->min;
t2.sec = t.sec - this->sec;
t2.pl();
return t2;
}
void operator-=(const etime &t)
{
this->hr -= t.hr;
this->min -= t.min;
this->sec -= t.sec;
this->pl();
}
void operator=(const etime &t)
{
this->hr = t.hr;
this->min = t.min;
this->sec = t.sec;
this->pl();
}
inline bool operator==(const etime &t) { return (hr == t.hr&&min == t.min&&sec == t.sec); }
void operator=(const int r)
{
this->sec = r;
this->pl();
}
friend void operator=(int x, const etime &t) {x = 3600 * t.hr + 60 * t.min + t.sec;}
std::string tostring()const
{
std::string temp;
Cstring ctemp=new char[5];
sprintf(ctemp, "%d", hr);
temp = ctemp;
sprintf(ctemp, "%d", min);
temp += ':';
temp += ctemp;
sprintf(ctemp, "%d", sec);
temp += ':';
temp += ctemp;
delete[]ctemp;
ctemp = nullptr;
return temp;
}
Cstring toCstring()const
{
Cstring st = new char[11];
Cstring temp = new char[4];
sprintf(temp, "%d", hr);
strcpy(st, temp);
sprintf(temp, "%d", min);
strcat(st, ":");
strcat(st, temp);
strcat(st, ":");
sprintf(temp, "%d", sec);
strcat(st, temp);
delete[]temp;
return st;
}
};
int main()
{
    etime t1, t2;
    cin >> t1 >> t2;
    cout << t2 - t1 << endl;
}

用类做可以吗?我好久之前写了一个时间类

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式