C++中做 时间的相加怎么弄啊 ?

两个时间相加就是(2:20:30)+(3:10:20)等于(5:30:50)
比如30秒+40秒等70秒,而我门得让它等于1分10秒
那么用运算符重载编写两个日期相加的程序(比如1980-3-10和1981-5-10相加结果是3961-8-20)怎么做啊?比如1980-4-20和1986-10-2相加等于3967-2-22。
哪为能帮我弄弄啊!!!!非常感谢的 !

第1个回答  2007-06-18
简单写了一个没有任何优化
#include <iostream>
using namespace std;

class Time{
public:
Time(int h, int m, int s);
Time operator +(const Time &t2);
friend ostream & operator << (ostream & os, const Time t);
private:
int hour;
int minute;
int second;
};

Time::Time(int h, int m, int s)
{
if(h>0 && h<=23) hour = h;
else cout<<"the value of hour is invalid!"<<endl;

if(m>0 && m<=59) minute = m;
else cout<<"the value of minute is invalid!"<<endl;

if(s>0 && s<=59) second = s;
else cout<<"the value of second is invalid!"<<endl;

}

Time Time::operator +(const Time &t2)
{
int hh,mm,ss;
hh=mm=ss=0;
if((ss=(second+t2.second)) >60 ){
ss-=60;
++minute;
}
if((mm=(minute+t2.minute)) > 60){
mm-=60;
++hour;
}
if((hh=(hour + t2.hour)) > 24 ){
hh-=24;
cout<<"the sum is overflowed"<<endl;
}
return Time(hh,mm,ss);
}

ostream & operator<<(ostream & os, const Time t)
{
os<<t.hour<<":"<<t.minute<<":"<<t.second;
return os;
}

int main(void)
{
Time t1(2,20,30), t2(4, 50, 59);
cout<<(t1+t2)<<endl;

return 0;
}本回答被提问者采纳
第2个回答  2007-06-18
#include <stdio.h>
#include <time.h>
#include <string.h>

int main()
{
time_t rawtime;
tm now, *ptm;
char buf[64];

time(&rawtime);
ptm = localtime(&rawtime);
memcpy(&now, ptm, sizeof(tm));

strftime(buf, 64, "%I:%M:%S", &now);
puts(buf);

now.tm_sec += 155; // 增加155秒
now.tm_min += 113; // 增加113分钟

mktime(&now);
strftime(buf, 64, "%I:%M:%S", &now);
puts(buf);
}

C++中做 时间的相加怎么弄啊 ?
using namespace std;class Time{ public:Time(int h, int m, int s);Time operator +(const Time &t2);friend ostream & operator << (ostream & os, const Time t);private:int hour;int minute;int second;};Time::Time(int h, int m, int s){ if(h>0 && h<=23) hour = ...

C++ VC \/MFC 随便用一种实现时间相加
CTime now = CTime::GetCurrentTime(); \/\/获取当前时间 now += delta; \/\/加上2600分钟的时间间隔 CString strTime; \/\/转换为CString, 注意CTime::Format在有些时候不支持中文,顾这种方法比较保险 strTime.Format(_T("%d年%d月%d日%d时%d分"),now.GetYear(),now.GetMonth(),now....

C语言中的时间相加
1.将两个数分为前两位和后两位。2.后两位先相加,如果超过60,则减去60,并进一位。3.前两位相加还要加上进位,如果超过24,则减去24.4.将前两位和后两位组合,形成最终要输出的形式 完整的程序代码如下,不懂之处可以看注解:include<stdio.h> void main(){ int a,b,c,d,e,f,ab,ce,df...

C++编程问题
if(d==0){d=30;} \/\/如果d%30的余数为0,则表明这一天是30号。if(m>12) \/\/判断月分是否大于12,如果大于12相应的年限应加1年 {y=y+m\/12;m=m%12;if(m==0){m=12;}} \/\/计算方法与日期相同。} return *this;} void print(){ cout<<y<<" year "<<m<<" month "<<d<...

C++中怎么计算两个时间的时间差???
第二种算法是找个时间原点,然后分别计算两个日期到时间原点的天数,然后比较相差多少天。比如,选择公元1年1月1日作为时间原点,然后写一个函数,可以计算出某个日期到公元1年1月1日的天数。这样把两个天数相减,很容易就能得到两个日期相差的天数。比如写一个这样的函数 int Days(int y,int m,int...

c++累加问题
{ sum+=n%10;\/\/这句相当于sum=sum+n%10,先算等号右边部分,意思是将n处以10,得到余数,然后加上sum本来的值,然后将相加的值赋给sum。n=n\/10;\/\/将n除以10,取整数部分,然后将值赋给n。这个语句结束后做判断,n>0的话继续执行循环,如果n=0或者小于0就执行cout《sum《end1 } ...

在C++中,给定一个四位整数,使用while循环实现各个位上的数值求和?
设置一个循环就行了:int i,k=0;\/\/i代表不知道多少位的数,k存储各位相加的和 scanf (i);\/\/简代码,下同 while (i%10)\/\/跳出条件 { k+=i%10;\/\/求余是为了每次接收最后一位,比如123%10就是3 i\/=10;\/\/整数除10只保留整数位,123\/10=12 } printf (k);...

c++中输入两个分数,经行相加约分输出
1. 在class定义中,应该在类名后面加上大括号,而不是分号。2. 在构造函数中,你没有创建一个对象来存储输入的参数值。应该将对象的名称命名为p,并使用new运算符来创建它。3. yuefen()函数应该在Add()函数之前调用,否则输出的结果不准确。4. Add()函数的公式不正确。应该是 q = a*d+b*c...

在c++里面,要做两个20位整数相加怎么做啊
用堆栈来做,先把数字放进去,然后每次从两个堆中读取,然后将产生的进位和下一次读取的数3个相加,当有一个堆为空而另一个不空时,用0代替。当两个都空时,结束,并保存最后的进位。include <stack> 这样就可以使用堆栈了。

C++中,不同类型的数据之间为什么要相互运算?在同一类型间不就行了吗...
因为C++是编译型的语言.编译好的程序在运行时是直接放到内存中执行的.而数据的加减乘除等运算在CPU执行运算时,不一样的数据类型对应不同的长度的,另外浮点数现在通常会采用协寄存器来运算的,所以需要转换.有些时候不转换会出错,那是因为编译器为了保证代码的正确性而做的标准.举个简单的例子吧 两个...

相似回答