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