if ステートメントの順序を入れ替えるだけです。すべての正三角形は二等辺三角形であるため、elseif に入れることはありません。コードを次のようにします。
if (side1 == side2 && side2 == side3 && side3 == side1)
printf("Equilateral triangle");
else if (side1 == side2 || side2 == side3 || side1 == side3)
printf("Isosceles triangle.");
または、両方の結果を出力したい場合は、二等辺の if ブロック内に等辺の if ブロックを入れ子にすることができます。
if (side1 == side2 || side2 == side3 || side1 == side3){
if (side1 == side2 && side2 == side3 && side3 == side1){
printf("Equilateral triangle");
}
printf("Isosceles triangle.");
}
考慮すべきもう 1 つの最適化は、等辺チェックで等値へのチェックが 2 つしか必要ないことです。すなわち:
(side1 == side2 && side2 == side3) => (side1 == side3)
したがって、if ステートメントは次のように読むことができます。
if (side1 == side2 && side2 == side3)