質問: ### 前提・実現したいこと ヘロンの公式を実行したいのだが、うまくいかない。 コンパイルまでは行くのだが、出力結果に異常アリ。 ### 発生している問題・エラーメッセージ ``` -1.#INf00というエラーが出る。 まず、scanfで3つだけしか入力できないようにしていたはずなのに、 4つまで入力できてしまう。 ``` ### 該当のソースコード ``` #include #include int main(){ double a,b,c,s,x; scanf("%f\n",&a); scanf("%f\n",&b); scanf("%f\n",&c); s=(a+b+c)/2.0; x=sqrt(s*(s-a)*(s-b)*(s-c)); if(a>0.0 && b>0.0 && c>0.0 && x>0.0){ printf("面積=%f\n",x); } else{ printf("三角系が作れません"); } return 0; } ``` ### 試したこと xの形をx=s*(s-a)*(s-b)*(s-c)とし、printfにsqrtにしたり、 ifの条件文を変えてみたりしたがうまくいかなかった。 ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: こんにちは。 a, b, cの入力はちゃんと三角形が作れるような値を入力されてますか? ヘロンの公式は三角形が成立する時のみ使える公式と思います。 (成立しない時、sqrtの中身が負になるのでは?) 【追記】 scanfで`"%f\n"`を指定すると、どうも次の数字が入力されるまで入力待ちのままになるようです。 `"%f"`と指定すれば余分な入力は不要になります。 なお、double型変数への入力書式は、`"%lf"`です。`"%f"`はfload型への入力です。 ついでに、[迷信] double の出力書式は "%lf"が参考になりますよ。