برنامه ای بنویسید که مقدار زاویه xرا بخواند وسینوس ان را با فرمول زیر حساب کند
sinx=x-x^3/3!+x^5/5!-x^7/7!+...
Printable View
برنامه ای بنویسید که مقدار زاویه xرا بخواند وسینوس ان را با فرمول زیر حساب کند
sinx=x-x^3/3!+x^5/5!-x^7/7!+...
لطفا در مورد اين فرمولي كه دادين توضيح كامل بدين.
همينطوري كه با يه فورمول نميشه برنامه شو نوشت!!
اون سه نقطه یعنی چی؟!
این فرمول سری تیلور است که سینوس یک زاویه را به طور تقریبی میدهد
sinx=x-x^3/3!+x^5/5!-x^7/7
واین فرمول تا بینهایت ادامه دارد
حالا بایدبرنامه را به دو صورت بنویسیم یکبار nجمله ی اول این سری را جمع کنه که در ان nیک عدد صحیح مثبت است که همزمان با xاز ورودی خوانده میشه ما باید برنامه ای بنویسیم که مقدار زاویه xرا بخواند و سینوس ان را محاسبه کند
کد:#include<iostream.h>
#include<conio.h>
long power(int a, int b)
{
long r=1;
int i;
for(i=0;i<b;r*=a,i++);
return r;
}
long fact(int n)
{
long r=1;
int i;
for(i=1;i<=n;r*=i,i++);
return r;
}
main()
{
int x, i, j, n, m=1;
float s=0;
cin>>x>>n;
for(i=0,j=1;i<n;i++,j+=2,m=-m)
s+=(float)m*power(x,j)/fact(j);
cout<<s;
getch();
}
مرسی از برنامه تان
میشه برنامه را با cبنویسید نه با c++
وقتي يه فورمول تا بي نهايت ادامه داشته باشه برنامه شم بايد تا بي نهايت باشه و نميشه كه برنامه تا بي نهايت ادامه داشته باشه يه شرط براي توقف لازمه.نقل قول:
دوست عزيز(reza_jolie) من كه اصلا از كدت سر در نياوردم ميشه بگي كارش چي هست اصلا درست كار مي كنه؟/چه عدد هايي ر. ما بايد بهش بديم تا بهمون جواب بده؟/بهتر نبود توان رو با تابع بازگشتي مي نوشتي؟
ببخشید تو تابع توان به r مقدار اولیه نداده بودم که مشکل از اونجا بود و ویرایش شد. و الان کاملا درست کار می کنه.
شما اول زاویه ی x و بعد n رو که تعداد جملاتی که می خاین براتون محاسبه کنه رو بهش میدین.
تابع بازگشتی باعث کندی برنامه می شه مخصوصا اگه به x و n اعداد نسبتا بزرگ داده بشه.
دوستان من رفتم سراغ سينوس هاي متفاوت و ديدم كه تقريبا هر 15 تا سينوس به يك اندازه افزايش پيدا مي كنن و با اين فرض يرنامه ي زيرو نوشتم مي ذارم شايد بدرتون خورد البته بايد بگم چون تقريبي حساب مي كنه برخي جاها خيلي كم (در حد 0.050) بيشتر حساب مي كنه.البته مي شد دقيقش كرد ولي وقت نداشتم ديگه.
:5::5::5::5::5:کد:#include <iostream>
using namespace std;
int main()
{
double sin1 = 0.0175;
int sinX;
cout <<"Zaviya x:";
cin>>sinX;
if(sinX <= 15)
cout <<sinX * sin1<<endl;
else
if(sinX >15 && sinX <= 30)
{
int item = sinX - 15;
double sin15 = 0.259;
cout <<sin15 + (item * 0.016);
}
else
if(sinX > 30 && sinX <= 45)
{
int item = sinX - 30;
double sin30 = 0.500;
cout <<sin30 + (item * 0.014);
}
else
if(sinX > 45 && sinX <= 60)
{
int item = sinX - 45;
double sin45 = 0.707;
cout <<sin45 + (item * 0.012);
}
else
if(sinX > 60 && sinX <= 75)
{
int item = sinX - 60;
double sin60 = 0.866;
cout <<sin60 + (item * 0.008);
}
else
if(sinX > 90)
{
cout <<"are you ok?\n";
return 1;
}
else
{
int item = sinX - 75;
double sin75 = 0.966;
cout <<sin75 + (item * 0.004);
}
cout <<'\n';
return 0;
}