שוב אני .
אז ככה,הפעם אני דרוש לכתוב תוכנית שמחשבת סינוס של זווית כלשהי ע"פ הנוסחא:
sin(x) = x – x3/3! + x5/5! – x7/7! + …
בכל אופן,כתבתי תוכנית,אשר באמת מצליחה לחשב את ערך הסינוס.
הבעיה היא שהיא מחשבת בצורה נכונה רק ברביע ה ראשון והשלישי.
בקיצור הטווח שמעניק תשובה נכונה הוא בין זווית0 ל 90
ובין זווית 0 ל -90.
\אשמח אם תביטו ותוכלו לעזור.
חשוב להדגיש,התוכנית מקבלת ערך זווית סינוס לבדיקה,ומקבלת רמת דיוק(מס’ איברים)
:#include <iostream>
using namespace std;
int factorial(int odd) // function that calculates factorials
{
int i, factorial_item,factorial_value;
for (i=1, factorial_item=1;i <= odd; i++)
{
factorial_value=factorial_item*(i);
factorial_item=factorial_value;
}
return factorial_value;
}
double power(double base, int power) // function that calculates the power
{
int i;
double solution;
double multiplication;
for (i=0, multiplication=1; i < power; i++)
{
solution=multiplication*base;
multiplication=solution;
}
return solution;
}
double calculation(double sin_value,int accuration_value) // function that calculates the value of the Sin
{
double solution, temp_solution;
int i, odd;
for(i=0, solution=0, temp_solution=0, odd=3; i < accuration_value;)
{
if (i % 2 == 0)
{
solution=solution-((power(sin_value,odd))/(factorial(odd)));
odd=odd+2;
i++;
}
else
{
solution=solution+((power(sin_value,odd))/(factorial(odd)));
odd=odd+2;
i++;
}
}
return solution;
}
void main() // the main function
{
double sin_value;
int accuration_value;
double final_sin_value;
cout<<"Enter value for Sin, accuration value:"<<endl;
cin>>sin_value>>accuration_value;
sin_value=(sin_value*3.14159)/180; // converts to radians
final_sin_value=sin_value+(calculation(sin_value,accuration_value));
cout<<"the Sin value is : "<<final_sin_value<<endl;
}