(此函数是更大程序的一部分,但独立于其他函数运行。)
好吧,我有一件功能夹克,给定 3 个输入,它只有 75% 的时间产生正确的输出。
我不知道输入,但我知道输出是错误的。
我不知道哪里出了问题,也不知道如何解决。
我假设它是每次将函数提交到 myProgrammingLab 时输入的 12 个值。
所以可能是特定输入的问题。
谢谢。
描述:
夹克尺寸(胸围英寸)= 高度乘以体重除以 288,然后 30 岁以上每 10 年增加 1/8 英寸进行调整。(请注意,调整仅在整整 10 年后进行。因此,30 到 39 岁之间没有调整,但 40 岁增加了 1/8 英寸。)
编辑:将 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
代替。
关于c++ - 为什么这些函数在 75% 的时间内给出正确的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31063332/