C++ c++;UVA 579-时钟指针错误答案
我试图解决这个问题,但系统总是给我“错误的答案”。我检查了其他人的解决方案,我确信我的算法是正确的。有人能帮我吗?谢谢。 问题:C++ c++;UVA 579-时钟指针错误答案,c++,C++,我试图解决这个问题,但系统总是给我“错误的答案”。我检查了其他人的解决方案,我确信我的算法是正确的。有人能帮我吗?谢谢。 问题: #include <iostream> #include <cstdio> #include <cmath> using namespace std; int main() { int hour, minute; float hour_degree, minute_degree; float total;
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int hour, minute;
float hour_degree, minute_degree;
float total;
while(scanf("%d:%d",&hour, &minute) == 2)
{
if( hour == 0 && minute == 0)
break;
minute_degree = minute * 6;
hour_degree = hour * 30 + float(minute / 2);
total = fabs(hour_degree - minute_degree);
if(total > 180)
total = fabs(360 - total);
printf("%.3f\n", total);
}
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
整小时,分钟;
浮动小时度、分钟度;
浮动总额;
而(扫描频率(“%d:%d”、&小时和分钟)==2)
{
如果(小时=0和分钟=0)
打破
分钟度=分钟*6;
小时度=小时*30+浮动(分钟/2);
总计=fabs(小时度-分钟度);
如果(总数>180)
总计=晶圆厂(360-总计);
printf(“%.3f\n”,总计);
}
返回0;
}
我在这里发现了一个bug
hour_degree = hour * 30 + float(minute / 2);
您正在进行整数除法,如果minute
是奇数,则会出错。应该是
hour_degree = hour * 30 + float(minute / 2.0);
我用g++4.4编译了你的程序,结果很好!!!谢谢!那么,如果我使用“分钟/2.0”,我还需要将数字转换为浮点吗?您可以使用
(分钟/2.0f)
而无需显式转换。括号不是必需的,但为了可读性。