OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

初心者な質問その3

  • すぐに回答を!
  • 質問No.224155
  • 閲覧数36
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 27% (3/11)

********************************************
int sankaku(double a,double b,double c){
double s,s2;
int flag=0;
s = a+b+c
s /= 2.0;
s2 = s*(s-a)*(s-b)*(s-c);
if(s2 <= 0.0) return(-1);
if(a==b)flag++;
if(b==c)flag++;
if(c==a)flag++;
return (flag);
}
********************************************

三角形の問題です。(*引数a,b,cは三角形の三辺の長さ(正値)を与えるの)
(1)戻り値(return value)が「-1」である場合何を意味するか
(2)二等辺三角形の場合の戻り値
(3)正三角形の場合の戻り値
についてお願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル12

ベストアンサー率 48% (325/664)

(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が戻り値となります。
-PR-
-PR-
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ