• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:初心者な質問その3)

三角形の戻り値についての質問

このQ&Aのポイント
  • 戻り値が「-1」の場合、三角形が存在しないことを意味します。
  • 戻り値が二等辺三角形の場合、引数で与えられた三辺のうち、少なくとも2つが等しいことを意味します。
  • 戻り値が正三角形の場合、引数で与えられた三辺がすべて等しいことを意味します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

(1) if(s2 <= 0.0) return(-1); から、s2<=0.0となる場合です。 …なんて書くと石が飛んできそうな気がするので、s2の計算を見てみます。 s = a+b+c; s /= 2.0; s2 = s*(s-a)*(s-b)*(s-c); となっていますね。a,b,cは正ですからs2計算時のsも正になります。 したがって、s2<=0.0が成り立つにはs-a<=0.0かs-b<=0.0かs-c<=0.0が成り立つ必要があります。 s = a+b+c;s /= 2.0;ですから、s2<=0.0が成り立つには(-a+b+c)/2<=0.0か(a-b+c)/2<=0.0か(a+b-c)/2<=0.0、すなわち、b+c<=aかa+c<=bかa+b<=cが成り立つ必要があります。 これは、3角形の3辺とはならない値が関数に与えられたことを表します。 (2)、(3) if(a==b)flag++; if(b==c)flag++; if(c==a)flag++; の部分は、各辺のうち長さが一致する辺の個数を数えています。 したがって、二等辺三角形の場合は1、正三角形の場合は3が戻り値となります。

関連するQ&A