2017-03-07 45 views
-1

我目前的项目使用一个do-while循环和一个单独的值生成函数来调用一个程序。该程序要求输入的数量不确定,直到输入的最后两个数字之间的差值大于12为止。代码有效,但只有当它看起来很明显。有时它会认识到bool已经被立即满足并终止了,有时候我可以输入15个以上的数字直到它结束,如果它甚至结束在第一位。如果可能的话,我想保持我的代码与我目前的代码类似。我知道我需要一个先决条件,因为第一个输入没有什么可比较的,我现在想弄明白这一点。C++为什么只要满足布尔条件,我的do-while循环就无法结束?

这是到目前为止我的代码:

bool TwelveApart(int x, int y); 

int main() 
{ 
    int num1, num2; 
    cout << "Enter some integers: " << endl; 

    do 
    { 
     cin >> num1 >> num2; 
     TwelveApart(num1, num2); 
    } while (TwelveApart(num1, num2) == false); 
    cout << "The difference between " << num1 << " and " << num2 << " is greater than or equal to 12." << endl; 

    return 0; 
} 
bool TwelveApart(int x, int y) 
{ 
    if (abs(x - y >= 12)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

您从'x'中减去'y> = 12'。是的,你的阅读是正确的,我相信它对你没有任何意义......呃,就是这一点。 ;)但是我相信你现在有足够的信息来解决你的问题。 –

+0

不能相信我错过了。 – JigglyBlubber

回答

5

有条件在

if (abs(x - y >= 12)) 

没有设置正确。它需要:

if (abs(x - y) >= 12) 

FWIW,可以简化功能:

bool TwelveApart(int x, int y) 
{ 
    return (abs(x - y) >= 12); 
} 

此外,你必须在do-while环路TwelveApart一个冗余呼叫。这个电话没有任何用处。循环可以是:

do 
{ 
    cin >> num1 >> num2; 
} while (TwelveApart(num1, num2) == false); 
+0

谢谢。它还不完全完美,即使满足条件,我仍然需要输入更多的号码,但它正在工作,我现在正处在正确的轨道上。 – JigglyBlubber

+0

@JigglyBlubber,这听起来不对。在符合'do {..} while();'语句的条件之后,您不必输入任何更多数字。 –

相关问题