質問: c言語 Linux Gnome端末です。 直角三角形の直角をはさむ二辺を読み込み、斜辺とsinθを求める問題です。 ♯include ♯include int main(void) { double x,y,z,ang; printf("x,y?\n"); scanf("%lf,%lf",&x,&y); z>=0; (z*z)==(x*x)+(y*y); sin(ang)==y/z; printf("z=%lf,sinθ=%lf",z,sin(ang)); return(0); } とすると、エラーは出なかったのですが、 x,yの値を3.0,4.0とすると、 z=-0.159650,sinθ=0.000000 となってしまいました。 正答はz=5.0,sinθ=0.8です。 間違えを指摘していただければ幸いです。 ご回答いただき、下記のように直したのですが、 z=72004899337.385880,sinθ=0.000000 となってしまいました。どこが間違っているかまだ分からないので教えていただきたいです。初心者で申し訳ありません。 ``` ♯include ♯include int main(void) { double x,y,z,ang; printf("x,y?\n"); scanf("%lf,%lf",&x,&y); z=exp(x*x+y*y); ang=asin(y/z); printf("z=%lf,sinθ=%lf",z,sin(ang)); return(0); }
回答: z=exp(x*x+y*y); おそらくZ^2=X^2+Y^2を示したいのでしょうが、 expは指数eのn乗を行いますので違います 平方根を使ってzだけ出しましょう そうすれば答えまであと少しですね。 ところでsinθって0.8? cosθと間違ってないだろうか