dポイントプレゼントキャンペーン実施中!

C言語を勉強中なのですが
math.h 抜きで自力で"斜辺"と"角度"で底辺と高さを出す事は可能でしょうか?

A 回答 (3件)

高さ=斜辺×sin(角度)


底辺=斜辺×cos(角度) なので
sin(角度)とcos(角度)が判れば、良いことになります。
#1の方のアドバイスに従い、自前でsin,cosを求める関数を
自作しました。
マクローリン展開については、下記URLを参照ください。
http://www.geisya.or.jp/~mwm48961/electro/maclau …

第3項までしか計算していません。
-------------------------------------------
#include <stdio.h>
#include <math.h>
double mysin(double x)
{
double ans;
ans = x - x*x*x/(2*3) + x*x*x*x*x/(2*3*4*5);
return ans;
}
double mycos(double x)
{
double ans;
ans = 1 - x*x/(2) + x*x*x*x/(2*3*4);
return ans;
}
main (int argc ,char** argv)
{
double kakudo; //単位はラジアン
double sin1;
double cos1;
double sin2;
double cos2;
printf("角度(ラジアン)を入力してください。=>");
scanf("%lf",&kakudo);
sin1 = mysin(kakudo);
cos1 = mycos(kakudo);
sin2 = sin(kakudo);
cos2 = cos(kakudo);
printf("角度=%lf mysin=%lf mycos=%lf sin=%lf cos=%lf\n",kakudo,sin1,cos1,sin2,cos2);
return 0;
}

-------------------------------------------
以下、実行結果です。
π(パイ)/4=0.785398=(45度)
角度(ラジアン)を入力してください。=>0.785398
角度=0.785398 mysin=0.707143 mycos=0.707429 sin=0.707107 cos=0.707107

π(パイ)/6=0.523599=(30度)
角度(ラジアン)を入力してください。=>0.523599
角度=0.523599 mysin=0.500002 mycos=0.866054 sin=0.500000 cos=0.866025

かなり、近い値が求められますが、それ以上の精度を望まれるなら
第4項、5項、6項・・・と計算する項数を増加させてください。
    • good
    • 1
この回答へのお礼

具体的な例を挙げてくれてありがとうございます!
非常に参考になりました!

お礼日時:2016/07/17 00:48

「math.h 抜き」, ねぇ....



例えば

#include <stdio.h>
double sin(double);
double cos(double);

int main()
{
double hypotenuse = 37;
double angle = 0.1;
double height = hypotenuse * sin(angle);
double base = hypotenuse * cos(angle);

printf("height = %f, base = %f\n", height, base);

return 0;
}

で求まるね.
    • good
    • 0

三角関数の近似値を求めるプログラムを作ることができるので、不可能ではありません。


(例えば、マクローリン展開による近似を使えば、四則演算だけでsin,cosが求められる)

面倒だし、精度や速度は落ちますけど。
    • good
    • 1
この回答へのお礼

マクローリン展開とは初めて聞きました
ありがとうございます
勉強します!

お礼日時:2016/07/17 00:46

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