# Untitled

May 9th, 2021
599
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. #include <iostream>
2. #include <cmath>
3.
4. using namespace std;
5.
6. double operation_1(double x) {
7.     return 3 * pow(x, 2) - 150 * sin(x);
8. }
9.
10. double operation_2(double x) {
11.     const double e = 2.7182818284;
12.     return pow(e, x / 2) - pow(x, 3) + 50;
13. }
14.
15. double operation_3(double x) {
16.     return pow(x, 3) - pow(x, 2) - 50;
17. }
18.
19. double operation_4(double x) {
20.     return 3 * x - pow(x, 2);
21. }
22.
23. double half_division_method(double(*operations)(double), double a, double b, const double E) {
24.     double x_2 = 0;
25.     while (b - a > E) {
26.         x_2 = (b + a) / 2;
27.         if (operations(x_2) * operations(b) <= 0)
28.             a = x_2;
29.         else
30.             b = x_2;
31.     }
32.     return x_2;
33. }
34.
35. double(*operations[4])(double) = { operation_1,operation_2,operation_3,operation_4 };
36. enum { first_operation, second_operation, third_operation, fourth_operation };
37.
38. int main() {
39.     setlocale(LC_ALL, "Russian");
40.     double a, b, x;
41.     int number;
42.     const double E = 0.0001;
43.     cout << "Введите интервал: " << endl;
44.     cout << "Левая граница: ";
45.     cin >> a;
46.     cout << "Правая граница: ";
47.     cin >> b;
48.
49.     cout << "На интервале [" << a << ";" << b << "] :" << endl;
50.     for (;;) {
51.         cout << endl << "Введите номер требуемой вам функции: " << endl;
52.         cout << "1. Уравнение 3*x2-150*sin(x)=0." << endl;
53.         cout << "2. Уравнение e^x/2-x3+50=0. " << endl;
54.         cout << "3. Уравнение x3-x2-50=0. " << endl;
55.         cout << "4. Уравнение 3x-x2=0. " << endl;
56.         cout << "0-конец расчета. " << endl;
57.         cout << "Ваш выбор:  ";
58.         cin >> number;
59.         if (number < 5 && number != 0) {
60.             double x = half_division_method(operations[number - 1], a, b, E);
61.             cout << x;
62.         }
63.         if (number >= 5) {
64.             cout << "Ошибка ввода.";
65.         }
66.         if (number == 0) {
67.             cout << "Расчет окончен.";
68.             break;
69.         }
70.     }
71.
72.     return 0;
73. }
74.
RAW Paste Data