| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:[求助]找错计算时、分、秒相加减
只看楼主 加入收藏
曲昌文
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-5-22
收藏
 问题点数:0 回复次数:5 
[求助]找错计算时、分、秒相加减

//计算时、分、秒相加减,时为上可以是负数。
using System;

class student
{
public int shi;
public int fen;
public int miao;
public student(int shi, int fen, int miao)
{
this.shi = shi;
this.fen = fen;
this.miao = miao;
}
public static student operator +(student a, student b)
{
student c = new student(0, 0, 0);
c.miao= a.miao + b.miao;
if( c.miao >= 60)
{
c.fen += c.miao / 60;
c.miao %= 60;
}

c.fen = a.fen + b.miao;
if(c.fen >= 60)
{
c.shi += c.fen / 60;
c.fen %= 60;
}

c.shi = a.shi + b.shi;

return c;
}
public static student operator -(student a, student b)
{
student c = new student(0, 0, 0);
c.miao = a.miao - b.miao;
if(c.miao < 0)
{
c.fen -= (-c.miao) / 60;
c.miao = (-c.miao) % 60;
}

c.fen = a.fen - b.fen;
if(c.fen < 0)
{
c.shi -= (-c.fen) / 60;
c.fen = (-c.fen) % 60;
}
c.shi = a.shi - b.shi;
return c;
}
}
class class1
{
static void Main(string[] args)
{
int shi;
int fen;
int miao;
shi = int.Parse(Console.ReadLine());
fen = int.Parse(Console.ReadLine());
miao = int.Parse(Console.ReadLine());
student a1 = new student(shi, fen, miao);

shi = int.Parse(Console.ReadLine());
fen = int.Parse(Console.ReadLine());
miao = int.Parse(Console.ReadLine());
student a2 = new student(shi, fen, miao);
student c = a1 + a2;
Console.WriteLine("{0}:{1}:{2}", c.shi, c.fen, c.miao);
c = a1 - a2;
Console.WriteLine("{0}:{1}:{2}", c.shi, c.fen, c.miao);
}

搜索更多相关主题的帖子: student miao int public fen 
2007-08-01 22:05
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
收藏
得分:0 
貌似进位和借位的时候会出错吧?
楼主改几个地方:
c.fen = a.fen + b.miao; 这里改成c.fen=c.fen+b.fen+a.fen;
c.shi = a.shi + b.shi; 这里改成c.shi=c.shi+b.shi+b.shi;
c.fen = a.fen - b.fen; 这里改成c.fen=c.fen+a.fen-b.fen;
c.shi = a.shi - b.shi; 这里改成c.shi=c.shi+a.shi-b.shi;

看了一眼楼主的代码,感觉应该是这些地方出错了,
由于时间关系,程序没做测试,有时间的朋友可以测试一下,把结果发出来大家共同讨论

2007-08-02 07:31
曲昌文
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-5-22
收藏
得分:0 
减法不对

http://blog..cn/bfgl我的博客
2007-08-04 12:03
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
收藏
得分:0 
呵呵,上次没仔细看,减法的时候果然是有错误的
不过主要是出在算法上,楼主对照自己的代码看一下
当秒不够减需要借位之后,不能简单的把负值求反这么简单,而是应该加上60使其变正才对啊

2007-08-04 15:17
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
收藏
得分:0 

顺便写个减法函数吧
[CODE]
public static student operator -(student a, student b)
{
student c = new student(0, 0, 0);
c.miao = a.miao - b.miao;
if (c.miao < 0)
{
c.fen -= (-c.miao) / 60;
c.miao = (c.miao) +60;
}

c.fen = c.fen + a.fen - b.fen;
if (c.fen < 0)
{
c.shi -= (-c.fen) / 60;
c.fen = (c.fen) + 60;
}
c.shi = c.shi + a.shi - b.shi;
return c;

}
[/CODE]


2007-08-04 15:25
曲昌文
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-5-22
收藏
得分:0 
加法好像不对

http://blog..cn/bfgl我的博客
2007-08-06 11:25
快速回复:[求助]找错计算时、分、秒相加减
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031279 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved