# Function Calculation Accuracy

Sep 22nd, 2020 (edited)
661
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. #include <iostream>
2. using namespace std;
3.
4. double power(double base, int n) {
5.     double result = 1.0;
6.     if (n == 0) {
7.         return 1;
8.     }
9.     for (int i = 1; i <= n; i++) {
10.         result = result * base;
11.     }
12.     return result;
13.
14. }
15. double fact(int n) {
16.     if (n == 0) {
17.         return 1.0;
18.     } else {
19.         return (double)n * fact(n - 1);
20.     }
21. }
22. double exponent(double epsilon, double x) {
23.     int n = 1;
24.     double current = 1.0;
25.     double result = current;
26.     while (abs(current) >= epsilon) {
27.         current = power(x, n) / fact(n);
28.         result = result + current;
29.         n++;
30.     }
31.     return result;
32. }
33. double merkator(double epsilon, double x) {
34.     int n = 2;
35.     double current = x;
36.     double result = current;
37.     while (abs(current) >= epsilon) {
38.         current = (power(-1, n - 1) * power(x, n)) / n;
39.         result = result + current;
40.         n++;
41.     }
42.     return result;
43. }
44. double cosine(double epsilon, double x) {
45.     int n = 1;
46.     double current = 1.0;
47.     double result = current;
48.     while (abs(current) >= epsilon) {
49.         current = power(-1, n) * (power(x, 2 * n) / fact(2*n));
50.         result = result + current;
51.         n++;
52.     }
53.     return result;
54. }
55. double arctg(double epsilon, double x) {
56.     int n = 2;
57.     double current = x;
58.     double result = current;
59.     while (abs(current) >= epsilon) {
60.         current = (power(-1, n - 1) / (2 * n - 1)) * power(x, 2 * n - 1);
61.         result = result + current;
62.         n++;
63.     }
64.     return result;
65. }
66.
67.
68.
69. int main()
70. {
71.     setlocale(LC_ALL, "Russian");
72.     int n;
73.     double x;
74.     double accuracy;
75.
76.     cout << "1 - e^x" << endl << "2 - ln(1+x)" << endl << "3 - cos(x)" << endl << "4 - arctg(x)" << endl;
77.     cout << "Введите номер функции > "; cin >> n; cout << endl;
78.     cout << "Введите точность > "; cin >> accuracy; cout << endl;
79.
80.     double result;
81.     switch (n)
82.     {
83.     case 1:
84.         cout << "Введите x > "; cin >> x; cout << endl;
85.         result = exponent(accuracy, x);
86.         break;
87.     case 2:
88.         while (true) {
89.             cout << "Введите x > "; cin >> x; cout << endl;
90.             if (x > -1 && x <= 1) {
91.                 break;
92.             }
93.             else {
94.                 cout << "Ошибка: х должен быть в пределах (-1; 1]" << endl;
95.             }
96.         }
97.         result = merkator(accuracy, x);
98.         break;
99.     case 3:
100.         cout << "Введите x > "; cin >> x; cout << endl;
101.         result = cosine(accuracy, x);
102.         break;
103.     case 4:
104.         while (true) {
105.             cout << "Введите x > "; cin >> x; cout << endl;
106.             if (x >= -1 && x <= 1) {
107.                 break;
108.             }
109.             else {
110.                 cout << "Ошибка: х должен быть в пределах [-1; 1]" << endl;
111.             }
112.         }
113.         result = arctg(accuracy, x);
114.         break;
115.     }
116.     cout << "Результат: " << result << endl;
117.     system("pause");
118. }
119.
RAW Paste Data