-2
# include <iostream>
# include <math.h>
# include <cstdlib>
using namespace std;

double cosin_value( double value);
double sin_value( double value);
double big_degree (double value);
double big_radian (double value);
double x;
double value;
double degree;
double radian;
const double PI = 3.14159;

char choice;
char yes ;

int main()
 {
cout << "Please enter an angle value => ";
cin >> value;

cout << "Is the angle in Degree or Radian?" << endl;
        cout << "\t" << "Type D if it is in Degree" << endl;
        cout << "\t" << "Type R if it is in Radian" << endl;
        cout << "Your response => ";
        cin >> choice; //degree or radian?

        cout.setf(ios::fixed);
        cout.setf(ios::showpoint);
        cout.precision(10);

    if (choice == 'D' || choice == 'd')
    {
        big_degree (value);
        cout << " " << "sin(x)   = " << "\t" << sin_value(degree) << endl;
        cout << " " << "cos(x)   = " << "\t" << cosin_value(degree) << endl;
        cout << " " << "tan(x)   = " << "\t" <<  sin_value(degree)/cosin_value(degree) << endl;
    }
    else if (choice == 'R' || choice == 'r')
    {   
        cout << " " << "sin(x)   = " << "\t" << sin_value(radian) << endl;
        cout << " " << "cos(x)   = " << "\t" << cosin_value(radian) <<  endl;
        cout << " " << "tan(x)   = " << "\t" <<   sin_value(radian)/cosin_value(radian) << endl;
    }   
    return 0;
}

// Sine,cosine functions
// angle -360<value<360

double sin_value( double value)
{
int count=1;

double sine, num, dem, sign, term;
sine=0;
sign = 1;   
num = value;
dem = count;

while ( count <= 20 )
{
    term = (num/dem);
    sine = sine + term*sign;
    num = num*value*value;
    count = count + 2;
    dem = dem * count * (count-1);
    sign = -sign;

}
return (sine);  
}   

double cosin_value( double value)
{
int count=0;
double cosine, num, dem, sign, term;
cosine=0;
sign = 1;

num = 1;
dem = 1;

while ( count <= 20 )
{
    term = (num/dem);
    cosine = cosine + term*sign;
    num = num*value*value;
    count = count + 2;
    dem = dem * count * (count-1);
    sign = -sign;
}
return (cosine);
}   

double big_degree (double value)
{
int result;
const int angle=360;
if (value >= 360 || value <= -360)
{
    result=value/angle;
    degree=(value-(result* angle))*PI/180;
}    
else
{
    degree = (value*PI)/180;
}   
return (degree);
 }  

double big_radian (double value)
{
int result;

if (value >= 2*PI || value <= -2*PI)
{
    result=value/(2*PI);
    radian=(value-(result* 2*PI));
}    
else
{
    radian = value;
}   
return (radian);
}   

こんにちは、これは基本的に、私が初心者として C++ で知っていた程度の知識を使用して、三角関数の値を計算するために作成したプログラム全体です。より良いビューについては、上記の私のコードに関するこのリンクを参照できます: codepad.org 114 行目から始まる行は、私が作成した関数です。値が 90 度または pi/2 ラジアンの場合、 cosxを 0に計算するにはどうすればよいですか? 値が 90 度であっても、プログラムはtanxを計算します。プログラムに90度の値を与えると、 0.000000ではなく0.0000013268の値が得られるとしましょう 申し訳ありませんが、私は初心者なので、コードは奇妙に見えます。ガイドに感謝します! double big_degree(double value)は、値が >= 360 または <= -360 の場合を意味します*

4

3 に答える 3

4

私は円周率の数字のために脳内にヒープスペースを割り当てていませんが、覚えています.atan(1) == pi / 4

PI次のように定数を変更します。

const double PI = atan(1) * 4;

あなたのコードを取得し、その変更を行うと、私は得る

Please enter an angle value => 90
Is the angle in Degree or Radian?
    Type D if it is in Degree
    Type R if it is in Radian
Your response => d
 sin(x)   =     1.0000000000
 cos(x)   =     0.0000000000
 tan(x)   =     15555226593901466.0000000000
于 2013-07-23T04:54:14.530 に答える
0
const double PI = 3.14159;

この定義を正確に行えば行うほど、 get!0の値はより近くなります。cos PI/2

入力自体をラジアンで取得する場合も、同じ基準が適用されます。

于 2013-07-23T04:32:55.067 に答える
0

問題はあなたのコードではありません。入力した情報は十分に正確ではありません。pi/2 の適切な値を計算すると、十分に正確な値が得られます。

また、値を丸めたい場合は、

#rounded off value=Math.Round(#old value, 4)を使用できます

于 2013-07-23T04:29:13.740 に答える