Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <iomanip>
- using namespace std;
- typedef double (*uf)(double, double, int &); // все uf можно задать с помощью (double, double, int &)
- void tabl(double, double, double, double, uf);
- double y(double, double, int &);
- double s(double, double, int &);
- int main()
- {
- cout << setw(8) <<"x"<< setw(15) <<"y(x)"<< setw(10) << "k" << endl;
- tabl(0.1,0.9,0.4,0.00001,y); // Вызываем функцию y
- cout << endl;
- cout << setw(8) <<"x"<< setw(15) <<"s(x)"<< setw(10) << "k" <<endl ;
- tabl(0.1,0.9,0.4,0.00001,s); // Вызываем функцию s
- return 0;
- }
- int fact(int n) // Функция для факториала
- {
- int res,i;
- res = 1;
- n += 1;
- for (i = 1; i <= n; i++) {
- res = res * i;
- }
- return res;
- }
- /*так как *uf - указатель на функцию => к всем функциям которые принимают (double, double, int &) можно обращаться с помощью uf
- => когда мы в main доходим до строчки tabl(0.1,0.9,0.4,0.00001,s); (обратить внимание, что в последнем значении мы вызываем функцию s) для того, чтобы обратиться к s в функции tabl мы как бы вводим локальную переменную fun. в стрчке sum=fun(x,eps,k); мы передаём в fun 3 значения, которые передаются в uf, а uf в своё время является указателем на функцию s которую мы написали в строчке tabl(0.1,0.9,0.4,0.00001,s);*/
- void tabl(double a, double b, double h, double eps, uf fun)
- {
- int k=0;
- double sum;
- for (double x=a; x<b+h/2; x+=h)
- {
- sum=fun(x,eps,k);
- cout << setw(8) << x << setw(15) << sum << setw(10) << k << endl;
- }
- }
- double y(double x, double eps, int &k)
- {
- return sin(x)/x;
- }
- double s(double x, double eps, int &k)
- {
- double a,c,sum;
- sum=a=c=x;
- k=1;
- while (fabs(c)>eps)
- {
- c = pow(-1,k)*pow(x,2*k)/fact(2*k);
- a *= -c;
- sum += a;
- k++;
- }
- sum += 1 - (x*x)/(2*3);
- return sum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement