C++ 带有3个条件的If语句(triangleExists)
检查三角形是否存在:它的每一条边都小于其他两条边的和 我尝试了很多选择:C++ 带有3个条件的If语句(triangleExists),c++,if-statement,conditional-statements,C++,If Statement,Conditional Statements,检查三角形是否存在:它的每一条边都小于其他两条边的和 我尝试了很多选择: float a=3, b=15, c=7; //its still taking 'y' bool triangleExists(float a, float b, float c) { if ((a < (b + c)) || (b < (a + b)) || (c < (a + b))) { std::cout << "y" << std::en
float a=3, b=15, c=7; //its still taking 'y'
bool triangleExists(float a, float b, float c)
{
if ((a < (b + c)) || (b < (a + b)) || (c < (a + b)))
{
std::cout << "y" << std::endl;
return true;
}else
std::cout << "n" << std::endl;;
return false;
}
我尝试过的选项也尝试过使用&&标记:
如果a
如果a
如果a
如果a
我可能错过了一些简单的东西。如果你能帮忙,我会很高兴的。在你的中等状态下,你有b加上@Zackary Murphy已经指出的打字错误,你的逻辑有一个更根本的问题 特别是,仅当三个条件都通过时,函数才应返回true。将中间项更正为b 例如:
#include <iostream>
bool triangleExists(float a, float b, float c)
{
if ((a < (b + c)) || (b < (a + c)) || (c < (a + b)))
{
std::cout << "y" << std::endl;
return true;
}
else
std::cout << "n" << std::endl;;
return false;
}
int main() {
float a = 3, b = 4, c = 500; //its still taking 'y'
triangleExists(a, b, c);
}
。。。打印y,即使3、4和500的边不能形成三角形
要获得正确的行为,可以将| |改为&&即从或改为和。或者,您可以反转测试并反转结果,即如果a>b+c | | b>a+c | c>a+b,则返回false。否则,返回true。问题和问题是什么?另外,当它的每一条边小于另外两条边的和时,请提供一个。必须使用&&logical AND运算符,而不是| | logical OR。哈哈哈哈哈哈哈,谢谢。昨晚我真的很累。是的,我昨天已经这样做了这是我的第一次尝试,但当我尝试时,它只是抓住了每一个可以帮助解决的问题。无论如何,谢谢你的回复。