電子書籍の厳選無料作品が豊富!

私は、ある問題で困っています。


「 実数 r を引数とし,半径が r,中心角が a(度) である扇形の面積を出力する 関数 double area( double r, int a ) を作成せよ.ただし,円周率は M_PI を利用すること.
main関数においてキーボードから正の実数を受け取り,double 型変数 x に代入する. また,360未満である正の整数を受け取り,int 型変数 y に代入する. 関数 area を用いることで,半径が x,中心角が y(度) である扇形の面積を 計算して表示するプログラムを作成せよ.角度に関する計算の際にキャストが必要であること に注意せよ.
いくつかの数値に関して,手計算の結果と一致することを確認すること. (以下の表示例の数値は正しいとは限らない)
半径が 5.0,中心角が 85 度である扇形の面積は 35.36 です.」
次に、自分のプログラムです。
#include<stdio.h>
#include<math.h>
double area(double r,int a )

{ double i;
i=r*r*M_PI*a/360;
//角度に関する計算の際にキャストが必要であること に注意せよ.
(double)a;
return i;
}//main関数においてキーボードから正の実数を受け取り,double 型変数 x に代入する.
int main ( void )
{ double x;
scanf("%lf",&x);
// また,360未満である正の整数を受け取り,int 型変数 y に代入する.
int y;
scanf("%lf",&y);

// 関数 area を用いることで,半径が x,中心角が y(度) である扇形の面積を 計算して表示するプログラムを作成せよ
area(double x,int y);
printf("半径が%lf,中心角が%d度である扇形の面積は%lfです\n.",x,y,x*x:M_PI*y/360);
return 0;
}

そしてこのようなエラーが出ます。

エラー: expected expression before ‘double’
area(double x,int y);
エラー: 関数 ‘area’ へ渡す引数が少なすぎます
area(double x,int y);

どこを修正すればいいか教えてください。よろしくお願いします。

A 回答 (1件)

C言語でいいんですよね?


ちょっと読みづらくて私もちゃんと見れてるかわかりませんが気になったことをいくつか。

i=r*r*M_PI*a/360;

i = (double)(r*r*M_PI)*(a/360);


scanf("%lf",&y);

scanf("%d", &y);


area(double x,int y);
printf("半径が%lf,中心角が%d度である扇形の面積は%lfです\n.",x,y,x*x:M_PI*y/360);

double tmp;
tmp = area(x, y);
printf("半径が%lf,中心角が%d度である扇形の面積は%lfです\n.", x, y, tmp);


とりあえず上記の通りに修正して実行してみてください
出来なかったら言ってください
出来ても解説がほしかったら言ってください
    • good
    • 0
この回答へのお礼

わかりやすく教えていただきありがとうございます。コンパイルはできましたが、実行結果がこうなりました。
30
60
▒▒▒a▒▒30.000000,▒▒▒S▒p▒▒60▒x▒ł▒▒▒▒`▒̖ʐς▒0.000000▒ł▒
.
どうすればこの模様のものはなくなるのですか?
再び質問して申し訳ありません。
よろしくお願い致します。

お礼日時:2016/10/26 21:38

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