修复C

时间:2018-04-15 18:10:37

标签: c performance timeout exit eof

我正在尝试测试我的程序(其中一部分在下面),我收到一个我无法调试的错误。输入是格式为“X / Y”的字符串,X和Y假定为正1位整数。函数“duration”应该采用如上所述的分数,并返回一个整数,即eigths。通过的分母总是2的幂(即0,1,2,4,8)。因此,如果分母已经是8,我们可以按原样返回分子,如果它小于8,我们必须相应地改变分子,然后返回新的分子。我在班级检查程序中收到以下错误:

  • “1/8”的分数在等待程序退出时返回持续时间1 -timed
  • “1/4”的分数返回持续时间2 - 等待程序退出时退出

  • “3/8”分数返回持续时间3 - 等待程序退出时退出

  • “1/2”的分数返回持续时间4 - 等待程序退出时退出

正如您所看到的,回报是正确的,但我没有正确退出?当我尝试制作测试文件时,我无法发送EOF退出。我认为这是造成这种情况的同一问题。

我尝试尽可能具体,提前感谢您的帮助

int duration(string fraction)

{
    //convert chars to ints
    unsigned int num = fraction[0] - '0';
    unsigned int denom = fraction[3] - '0';

    //check if denominator is 8, if so, return numerator. Else, convert 
    fraction to ?/8
    unsigned int counter = 0;

    if (denom == 8) //no need to convert
    {
        return num;

    else // (denominator is < 8)
    {
        do
        {
            denom = denom * 2;
            counter++;
        }
        while (denom != 8);

        num = num * (pow(2, counter));
        return num;
     }

}

0 个答案:

没有答案