質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

2348閲覧

c言語 三角関数

uv-

総合スコア26

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/01/11 10:11

編集2017/01/12 06:20

c言語 Linux Gnome端末です。

直角三角形の直角をはさむ二辺を読み込み、斜辺とsinθを求める問題です。

♯include<stdio.h>
♯include<math.h>
int main(void)
{
double x,y,z,ang;

printf("x,y?\n");
scanf("%lf,%lf",&x,&y);

z>=0;
(zz)==(xx)+(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<stdio.h> ♯include<math.h> 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); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こんにちは。

z>=0;

(zz)==(xx)+(y*y);
sin(ang)==y/z;

最初の2行を解けばzの値が求まり、3行目を解けばangが求まる式になっていると思いますが、C言語は方程式を解く機能は内蔵していません。普通の電卓を使って解く時のような計算手順を与える必要が有ります。

z=平方根(xx + yy);
ang=逆sin(y/z);

と言う感じです。これをC言語の文法で記述するのです。


【追記】
質問の追加に対して追記です。

expは指数関数です。平方根ではありません。リンク先サイトにはexpの上に平方根が記載されているのですが、コピペミスでしょうか?

それとすいません、求めるものはθではなくsinθなのですね。ならば、sinθ=y/zなのでzを求めたら単純に割り算するだけでOKです。暗算でできますね。33+44は25なので25の平方根は5です。4/5は0.8ですね。

投稿2017/01/11 10:45

編集2017/01/12 06:59
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

z>=0;
(zz)==(xx)+(y*y);
sin(ang)==y/z;
はコピーミスかな?コンパイル通らなさそうですし。==は等価判定なので代入ではありません

それと、sin(ang)==y/z;
としていますが、angの値が不定なのと、y/zをどうしたいのか。

今一度見直して書き直してください

投稿2017/01/11 10:27

ardin

総合スコア546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ardin

2017/01/11 10:57 編集

Chironianさんがだいたい書いてくれていますが、こちらも追記 angの値が不定という意味は、この時点で何も代入されておらず、値が定まっていないという意味です。 angは通常どのように算出されますか?ang=○○のように書いてください。 またかなりの初歩で躓いているようなので、 慌てず、マニュアル本やサイトを参考に初心者向けのページを読むなりして プログラムを勉強してみてください 加算、減算を単純に行っているプログラムを見てみるのが良いと思います
guest

0

ベストアンサー

z=exp(xx+yy);
おそらくZ^2=X^2+Y^2を示したいのでしょうが、
expは指数eのn乗を行いますので違います
平方根を使ってzだけ出しましょう
そうすれば答えまであと少しですね。

ところでsinθって0.8? cosθと間違ってないだろうか

投稿2017/01/12 06:46

ardin

総合スコア546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問