アプリ版:「スタンプのみでお礼する」機能のリリースについて

この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'

お願いします。

A 回答 (5件)

使用しているOSやコンパイラを書いていただくと、解決に結び付くかもしれません。


コンパイラによってはmathライブラリの結合を指定しなければなりません。
例えばgccならば
% gcc sqrt.c -o sqrt -lm
% ./sqrt
Enter 3 numbers3 4 5
area = 6.000000
のようにすると正しく実行できます。
    • good
    • 0

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になりました。
    • good
    • 0

★アドバイス


>それでもできないんですよね~
 ↑
 math.h をインクルードしても出来ないという事でしょうか?
>まだ授業ではmath.hを使用することは習っていないのでなくてもできるはずなんですが↓
 ↑
 それなら『sqrt』関数は標準関数(math.h)ではなく自作しなさいという事になっていませんか?
 それなら自分で平方根の計算をさせる関数を作ります。
 ただ学校で先生が math.h のインクルードをしなさいと言うことを言い忘れていると困りますね。
 先生などに確認してみてはどうでしょう。
 『sqrt』関数は算術関数として標準関数(math.h)で用意されていますが、利用するには
 math.h をインクルードしないとエラー(警告)がでます。
>これはパソコンに問題があるんでしょうか??
 ↑
 パソコンには問題はありません。
 問題は先生などの出題者でしょう。
 先生に確認して下さい。
 本当に math.h をインクルードしないでも計算(コンパイル)できるのか。
・以上。
    • good
    • 0

★アドバイス


・sqrt() 関数が定義されていないからです。
 この関数を使うには math.h というヘッダをインクルードしないと使えません。
 よって
 #include <math.h>
 の1行を
 #include <stdio.h>
 の次の挿入して下さい。
 再コンパイルすればエラーにはならないと思います。
・以上。なおC言語に関しては『C/C++』カテゴリがあります。

参考URL:http://oshiete1.goo.ne.jp/c250.html
    • good
    • 0
この回答へのお礼

NO.1さんのところでも書いたようにとりあえずできないんです!!
パソコンが悪いんでしょうか??
友達とは解答が一緒なのに・・・

お礼日時:2007/12/13 18:29

math.h を include していなからではないでしょうか。



問題を解決できないときは、きちんとエラー メッセージを読む習慣を付ける
と良いですよ。
    • good
    • 0
この回答へのお礼

それでもできないんですよね~
まだ授業ではmath.hを使用することは習っていないのでなくてもできるはずなんですが↓
a,b,cを3,4,5で入力すると、s=(a+b+c)/2が6になるはずなんですけど、やってみると1.5になっちゃうんです。
これはパソコンに問題があるんでしょうか??

お礼日時:2007/12/13 18:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!