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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
winter_cat
記事: 16
登録日時: 7年前
住所: Tokyo

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

#1

投稿記事 by winter_cat » 7年前

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;
}

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

box
記事: 1746
登録日時: 9年前

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

#2

投稿記事 by box » 7年前

CやC++において、三角関数の角度の単位はラジアンです。度ではありません。
入力した度の値をラジアンに変換してください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

winter_cat
記事: 16
登録日時: 7年前
住所: Tokyo

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

#3

投稿記事 by winter_cat » 7年前

そうだったんですか(゚д゚)!

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

閉鎖

“C言語何でも質問掲示板” へ戻る