Вычислите cos (x) к 0, когда x равен 90 градусам или пи / 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 и далее, является функцией, которую я создал. Там есть проблема, где, как я могу вычислить мой cosx быть 0, когда значение составляет 90 градусов или пи / 2 радиан?
так как программа все равно будет вычислять Tanx для меня даже значение составляет 90 градусов.
Скажем, давая значение 90 градусов к программе, это даст мне ценность 0,0000013268 вместо 0.000000
извините, так как я только начинающий, код будет выглядеть странно для вас, ребята.
Я ценю ваши гиды!
double big_degree (double value) означает, что когда значение> = 360 или <= -360 *

-2

Решение

Я не выделяю кучу места в моем мозгу для цифр пи, но я помню, что 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
3

Другие решения

const double PI = 3.14159;

Чем точнее вы дадите это определение, тем ближе 0 будет значение cos PI/2 получить!

Если вы получаете сами входные данные в радианах, там также применяются те же критерии.

1

Проблема не в вашем коде. Введенные вами данные недостаточно точны. Рассчитайте правильное значение pi / 2, и вы получите достаточно точное значение.

Кроме того, если вы хотите округлить значения, которые вы можете использовать

#заключенное значение = Math.Round (#old value, 4)

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector