プロが教えるわが家の防犯対策術!

初速度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を以下のように表示する方法も教えて下さい。
|*
| *
| *
| *
|*

お願いします。

A 回答 (3件)

そうですね、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に入れることができます。
    • good
    • 0

半角文字のπはないです。


C言語で使うなら、
3.14159265と直に書いてもいいし、
math.h の中で、M_PI として定義されているのを使ってもよいです。
    • good
    • 0

rをラジアン(360°=2πラジアン)単位で入力すれば


大丈夫だと思いますが?

sinやcosなど三角関数の引数はラジアン、です。
    • good
    • 0
この回答へのお礼

ラジアン表示だったのですね。ありがとうございます。
ラジアンでということは 2/3π <ーーすみませんπの表示は半角でどうやればいいのしょうか。

お礼日時:2006/12/13 17:39

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