- 締切済み
どうしてもできない!!
このC言語でのプログラミングがsqrtのところで常にエラーしてしまいます。どこがおかしいのか、おしえてください。 問・三角形の三辺の長さを入力し、ヘロンの公式を利用して面積を求めなさい。 #include <stdio.h> main() { double a,b,c,s,S; printf("Enter 3 numbers"); scanf("%lf %lf %lf",&a,&b,&c); s=(a+b+c)/2; S=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area = %f\n",S); } [EOF] 常に表示されるエラー (1)In fuction `main': (2)type mismatch in implicit declaration for built-in function `sqrt' (3)undefined reference to `sqrt' お願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
使用しているOSやコンパイラを書いていただくと、解決に結び付くかもしれません。 コンパイラによってはmathライブラリの結合を指定しなければなりません。 例えばgccならば % gcc sqrt.c -o sqrt -lm % ./sqrt Enter 3 numbers3 4 5 area = 6.000000 のようにすると正しく実行できます。
- TT414
- ベストアンサー率18% (72/384)
sqrtとmath.hの関係はANo.1から3の方の通りです。 >a,b,cを3,4,5で入力すると、s=(a+b+c)/2が6になるはずなんですけど、やってみると1.5になっちゃうんです。 「scanf("%lf %lf %lf",&a,&b,&c);」で入力しているのに、「3,4,5」と入力できません、「3 4 5」などと空白で区切ってください。 「3,4,5」だとaに3を入力後、3のうしろの「,」をscanfで処理できないので、bとcに値はセットされていません、今回の場合b+cが0だったのでsは1.5になりました。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス >それでもできないんですよね~ ↑ math.h をインクルードしても出来ないという事でしょうか? >まだ授業ではmath.hを使用することは習っていないのでなくてもできるはずなんですが↓ ↑ それなら『sqrt』関数は標準関数(math.h)ではなく自作しなさいという事になっていませんか? それなら自分で平方根の計算をさせる関数を作ります。 ただ学校で先生が math.h のインクルードをしなさいと言うことを言い忘れていると困りますね。 先生などに確認してみてはどうでしょう。 『sqrt』関数は算術関数として標準関数(math.h)で用意されていますが、利用するには math.h をインクルードしないとエラー(警告)がでます。 >これはパソコンに問題があるんでしょうか?? ↑ パソコンには問題はありません。 問題は先生などの出題者でしょう。 先生に確認して下さい。 本当に math.h をインクルードしないでも計算(コンパイル)できるのか。 ・以上。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス ・sqrt() 関数が定義されていないからです。 この関数を使うには math.h というヘッダをインクルードしないと使えません。 よって #include <math.h> の1行を #include <stdio.h> の次の挿入して下さい。 再コンパイルすればエラーにはならないと思います。 ・以上。なおC言語に関しては『C/C++』カテゴリがあります。
- irija_bari
- ベストアンサー率73% (70/95)
math.h を include していなからではないでしょうか。 問題を解決できないときは、きちんとエラー メッセージを読む習慣を付ける と良いですよ。
お礼
それでもできないんですよね~ まだ授業ではmath.hを使用することは習っていないのでなくてもできるはずなんですが↓ a,b,cを3,4,5で入力すると、s=(a+b+c)/2が6になるはずなんですけど、やってみると1.5になっちゃうんです。 これはパソコンに問題があるんでしょうか??
お礼
NO.1さんのところでも書いたようにとりあえずできないんです!! パソコンが悪いんでしょうか?? 友達とは解答が一緒なのに・・・