ページ 11

【AOJ】三角関数の誤差について質問です。

Posted: 2013年2月09日(土) 20:35
by winter_cat
AOJのこの問題(http://judge.u-aizu.ac.jp/onlinejudge/d ... p?id=10025)について質問です。
2辺の長さと角度を入力し、面積、高さ、周囲の長さを算出するのですが、Sample Inputでは

4 3 90   という入力に対して、Outputが

6.00000000
12.00000000
3.00000000

となっていますが、私が組んだプログラムだと同じ入力に対しての出力が

5.36397998
12.97944536
2.68198999

となってしまい精度が低いのですがこれは何故でしょうか??

コード:

#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
int main(){
    double a,b,c,s,l,h;
    while(cin>>a>>b>>c){
        s=a*b*sin(c)/2;
        l=a+b+sqrt(pow(a,2.0)+pow(b,2.0)-2*a*b*cos(c));
        h=b*sin(c);
        cout<<fixed<<setprecision(8)<<s<<"\n"<<l<<"\n"<<h<<endl;
    }
    return 0;
}

どなたかアドバイスよろしくお願いします。

Re: 【AOJ】三角関数の誤差について質問です。

Posted: 2013年2月09日(土) 20:40
by box
CやC++において、三角関数の角度の単位はラジアンです。度ではありません。
入力した度の値をラジアンに変換してください。

Re: 【AOJ】三角関数の誤差について質問です。

Posted: 2013年2月09日(土) 20:44
by winter_cat
そうだったんですか(゚д゚)!

無事出来ました!ありがとうございますm(__)m