我的程序已啓動並正在運行,但是我的if語句出現問題,導致「scalene」成爲除正確輸出之外的輸出(除非scalene是正確的輸出)。看看這個問題:如果聲明有問題?
任何人都可以發現的bug?
triangleShape功能
# include "header.h"
triangleType triangleShape(float sideLength1, float sideLength2, float sideLength3)
{
triangleType triangle;
if (sideLength1 + sideLength2 < sideLength3)
triangle = noTriangle;
else if (sideLength1 + sideLength3 < sideLength2)
triangle = noTriangle;
else if (sideLength3 + sideLength2 < sideLength1)
triangle = noTriangle;
else if (sideLength1 == sideLength2 == sideLength3)
triangle = equilateral;
else if (sideLength1 == sideLength2)
triangle = isoceles;
else if (sideLength1 == sideLength3)
triangle = isoceles;
else if (sideLength2 == sideLength3)
triangle = isoceles;
else
triangle = scalene;
return triangle;
}
輸出功能
# include "header.h"
void output (float sideLength1, float sideLength2, float sideLength3)
{
if (triangleShape (sideLength1, sideLength2, sideLength3) == noTriangle)
cout << "Side lenghts of " << sideLength1 << " " << sideLength2 << " and " << sideLength3 << " would not form a triangle." << endl;
else if (triangleShape (sideLength1, sideLength2, sideLength3) == equilateral)
cout << "A triangle with sides of lengths " << sideLength1 << " " << sideLength2 << " and " << sideLength3 << "would be " <<
"an equilateral triangle."<< endl;
else if (triangleShape (sideLength1, sideLength2, sideLength3) == isoceles)
cout << "A triangle with sides of lengths " << sideLength1 << " " << sideLength2 << " and " << sideLength3 << "would be " <<
"an isoceles triangle."<< endl;
else (triangleShape (sideLength1, sideLength2, sideLength3) == scalene);
cout << "A triangle with sides of lengths " << sideLength1 << " " << sideLength2 << " and " << sideLength3 << " would be " <<
"a scalene triangle."<< endl;
}
在相關說明中,我建議您使用`switch` /`case`構造或查找表來避免所有這些`if',這將使代碼更具可讀性並避免這種錯誤。 – 2011-02-06 01:09:42
除了任何其他問題,比較`if(sideLength1 == sideLength2 == sideLength3)`不會做你認爲的事情。 – Blastfurnace 2011-02-06 01:11:49