- 締切済み
物体が落ちるまで
初速度v、打ち上げ角度rでうち上がってから落ちてくるまでの 物体の位置を表示するというものなのですが とりあえず n秒後の物体の高さをhとしたときhを出す関数を 作って見たのですがうまくできません。見てもらえないでしょうか。 #include <stdio.h> #include <math.h> void input(double *v, double *r, double *n); void solve(double v, double r, double n); int main(void) { double v, r, n; input(&v, &r, &n); solve(v, r, n); return 0; } void input(double *v, double *r, double *n) { puts("物体を打ち上げ角r、初速度vで打ち上げた時、n秒後の高さhを求めます。"); puts("初期値v, r, nを入力してください"); printf("v="), scanf("%lf", v); printf("r="), scanf("%lf", r); printf("n="), scanf("%lf", n); putchar('\n'); } void solve(double v, double r, double n) { double w = sin(r); printf("sin r は = %f です。\n",w);<ーーーここでsin r がうまく求まりません。 printf("したがって求めたいn秒後の物体の高さhは、\n"); double h = v * w * n - 5 * n * n; printf("h=%f\n",h); } です。重力加速度は10としています。 あと、できればこのhを以下のように表示する方法も教えて下さい。 |* | * | * | * |* お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Interest
- ベストアンサー率31% (207/659)
そうですね、C言語の三角関数は引数がラジアンなんですよね。 ラジアンをお手軽に使うためのマクロを紹介します。 #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #define rad2deg(a) ( (a) / M_PI * 180.0 ) #define deg2rad(a) ( (a) / 180.0 * M_PI ) 使い方は、 double w = sin(deg2rad(r)); とすれば、rが360度で表現されていてもラジアンに直してsinに入れることができます。
半角文字のπはないです。 C言語で使うなら、 3.14159265と直に書いてもいいし、 math.h の中で、M_PI として定義されているのを使ってもよいです。
rをラジアン(360°=2πラジアン)単位で入力すれば 大丈夫だと思いますが? sinやcosなど三角関数の引数はラジアン、です。
お礼
ラジアン表示だったのですね。ありがとうございます。 ラジアンでということは 2/3π <ーーすみませんπの表示は半角でどうやればいいのしょうか。