为什么这些函数在75%的时间内给出正确的输出
Why do these functions give the correct output 75% of the time?
(此函数是较大程序的一部分,但独立于其他函数运行。)
好的,我有一个函数套,给定3个输入,它只在75%的时间内产生正确的输出。
我不知道输入,但我知道输出是错误的。
我不知道哪里出了问题,也不知道如何修复。
我假设每次将函数提交给myProgrammingLab时输入的12个值相同。
因此,这可能是一个特定输入的问题。
谢谢。
说明:
夹克尺寸(胸部以英寸为单位)=身高乘以体重除以288,然后在30岁以上每10年增加1/8英寸进行调整。(注意,调整只在整整10年后进行。因此,30岁至39岁的人没有调整,但40岁的人增加了1/8英寸。)
edit:将tmp更改为float仍然会产生错误。
float jacket(float weight, float height, int age) {
double result = (height * weight) / 288;
/*now for every 10 years past 30 add (1/8) to the result*/
if((age - 30) > 0){
int temp = (age - 30) / 10;
result = result + (temp * .125);
}
return result;
}
这是同一个函数,在同一个问题上以不同的方式编写。
float jacket(double jWeight, double jHeight, int jAge)
{
double jSize = ((jWeight*jHeight)/288.0);
int i = jAge/10 - 3;
if((jAge/10)>3)
jSize += 0.125*i;
return jSize;
}
这是具有相同问题的的第三个函数
float jacket(double weight, double height, int age)
// calculates the jacket size, adjusting for age in increments
// of ten years, if customer is over 30 years of age.
{
int age_factor;
double j_size;
j_size = (height*weight)/288.0;
if (age >=30)
{
age_factor = (age-30)/10; //note possible truncation.
j_size += age_factor/8.0;
}
return j_size;
}
第一次调用函数时,它会产生一个不正确的返回值。剩余的3次被称为返回值是正确的。
观察:
Expected Output:
jacket·size·=·24.17↵
jacket·size·=·40.00↵
jacket·size·=·46.04↵
jacket·size·=·35.42↵
Actual Output:
jacket·size·=·24.29↵
jacket·size·=·40.00↵
jacket·size·=·46.04↵
jacket·size·=·35.42↵
*给定相同输入的所有三个函数都会产生相同的输出
int temp = (age - 30) / 10;
通过将temp设置为int
,由于截断,您将得到不正确的结果。请尝试使用float
。
我想一个可以说31岁不一定是30岁以上的1岁。尝试int temp = (age - 31)/10;
。就我个人而言,我认为这是错误的,这里的其他人也是如此,但有人可能会说,一个人31岁的那一刻只比30岁多一秒。无论如何,它值得一试。
相关文章:
- 仅显示给定时间的输出
- 我怎样才能阻止我的程序输出时间,它使我的程序难以阅读
- 如何以C 的毫秒输出时间
- 来自不同位置的数组输出的执行时间
- 输出时间和日期与小数时间,不使用 C++11
- 输出时间和日期,格式为:2018-01-26 15:51.159753
- 在 C++ 中将输出屏幕冻结一段时间
- Windows Batch - 如何在将标准输出重定向到文件时添加时间戳
- 如何读取时间输入并格式化输出
- 输出boost :: chrono :: system_clock :: time_point作为UTC的本地时间
- 二进制搜索程序。在应用测试用例时给出正确的输出仍然显示" "超出时间限制" "错误
- 实现区域设置格式的时间输出
- 按升序输出两个时间值
- MPI:输出时间随着处理器数量的增加而增加
- C++子级在复制构造函数和输出之间的某个时间点更改父成员
- 如何设置时间以差 1 秒输出数字
- q调试控制台输出与时间戳
- 调试解决方案和测试输出的可见时间不到一秒
- 输出时间比文件本身不正确
- 如何在Visual C++2010中调试时跟踪/输出时间戳