Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <locale.h>
- using namespace std;
- double (*funnik)(double);
- double f1(double x)
- {
- return x * sin(x);
- }
- double f2(double x)
- {
- return tan(x);
- }
- double f3(double x)
- {
- return x * x;
- }
- void integral( double(*f)(double)) {//передала эту хуйню
- double a, b;
- do {
- cout << "Введите интервал интегрирования через пробел:\n";
- cin >> a >> b;
- } while (a >= b);
- int N = 100000;
- double dx = (b - a) / (N - 1);
- double sum = 0;
- for (double x = a; x < (b + dx / 2); x += dx)
- sum += dx * f(x);
- cout << "Метод прямоугольников: " << sum << endl;
- sum = 0;
- for (double x = a + dx; x < (b - dx / 2); x += dx)
- sum += f(x);
- cout << "Метод трапеций: " << (dx / 2) * (a + 2 * sum + b) << endl;
- sum = 0;
- for (int i = 1; i < N - 1; ++i) {
- double x = a + i * dx;
- if (i % 2 == 0)
- sum += 2 * f(x);
- else
- sum += 4 * f(x);
- }
- cout << "Метод Симпсона: " << (dx / 3) * (a + sum + b) << endl;
- }
- void znak( double(*f)(double)) {//передала эту хуйню
- cout << "введите точку, в которой хотите найти значение функции \n ";
- int x;
- scanf_s("%d", &x);
- cout << "Значение в выбранной точке: " << f(x) << endl;
- }
- int main() {
- setlocale(LC_CTYPE, "Russian");
- const int N = 10000;
- int k, p;
- cout << "Введите номер функции. sin(x), tan(x), или же квадрат икса \n";
- scanf_s("%d", &k);
- cout << "если хотите найти интеграл, нажмите 1 \n";
- scanf_s("%d", &p);
- if (p == 1)
- {
- switch (k)
- case 1:
- {
- integral(f1); break;
- case 2:
- integral(f2); break;
- case 3:
- integral(f3); break;
- default:
- printf("Неправильный ввод.\n");
- }
- }
- cout << "если хотите найти значение фунцкии, нажмите 1 \n";
- scanf_s("%d", &p);
- if (p == 1)
- {
- switch (k)
- case 1:
- {
- znak(f1); break;
- case 2:
- znak(f2); break;
- case 3:
- znak(f3); break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement