为什么这些功能在75%的时间内都能提供正确的输出?

时间:2015-06-26 01:12:08

标签: c++ algorithm function

(此功能是较大程序的一部分,但独立于其他功能运行。)

好的我有一个功能夹克并且有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;
}

*给出相同输入的所有三个函数产生相同的输出

2 个答案:

答案 0 :(得分:1)

int temp = (age - 30) / 10;

通过将temp设为int,由于截断,您将得到不正确的结果。请尝试使用float

答案 1 :(得分:0)

我猜一个可以说31岁不一定超过30岁。尝试int temp = (age - 31)/10;。就个人而言,我认为这是错误的,就像其他人一样,但是有人可能会争辩说,当一个人满31岁的时候只有30秒钟的时候,无论如何都值得一试。