(此功能是较大程序的一部分,但独立于其他功能运行。)
好的我有一个功能夹克并且有3个输入它只能产生75%的正确输出。
我不知道输入,但我知道输出是错误的。
我不知道出了什么问题,也不知道如何修复它。
我假设每次将函数提交给myProgrammingLab时都输入相同的12个值。
因此,特定输入可能存在问题。
感谢。
夹克尺寸(胸围以英寸为单位)=身高乘以重量除以288,然后在30岁以上每10年增加1/8英寸进行调整。(请注意,调整仅在整整10年后进行。因此,30至39岁没有调整,但40岁时增加了1/8英寸。)
编辑:将tmp更改为float仍会产生错误。
i++
对于同样的问题,这是同样的函数。
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;
}
第一次调用该函数时,它会产生不正确的返回值。保留3次称为返回值是正确的。
观察:
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;
}
*给出相同输入的所有三个函数产生相同的输出
答案 0 :(得分:1)
int temp = (age - 30) / 10;
通过将temp设为int
,由于截断,您将得到不正确的结果。请尝试使用float
。
答案 1 :(得分:0)
我猜一个可以说31岁不一定超过30岁。尝试int temp = (age - 31)/10;
。就个人而言,我认为这是错误的,就像其他人一样,但是有人可能会争辩说,当一个人满31岁的时候只有30秒钟的时候,无论如何都值得一试。