Advertisement
Zennoma

mechty_o_ksenechke

Apr 18th, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale.h>
  3. using namespace std;
  4.  
  5. double (*funnik)(double);
  6. double f1(double x)
  7. {
  8. return x * sin(x);
  9. }
  10.  
  11. double f2(double x)
  12. {
  13. return tan(x);
  14. }
  15. double f3(double x)
  16. {
  17. return x * x;
  18. }
  19.  
  20. void integral( double(*f)(double)) {//передала эту хуйню
  21. double a, b;
  22. do {
  23. cout << "Введите интервал интегрирования через пробел:\n";
  24. cin >> a >> b;
  25. } while (a >= b);
  26.  
  27. int N = 100000;
  28.  
  29. double dx = (b - a) / (N - 1);
  30. double sum = 0;
  31. for (double x = a; x < (b + dx / 2); x += dx)
  32. sum += dx * f(x);
  33. cout << "Метод прямоугольников: " << sum << endl;
  34.  
  35. sum = 0;
  36. for (double x = a + dx; x < (b - dx / 2); x += dx)
  37. sum += f(x);
  38. cout << "Метод трапеций: " << (dx / 2) * (a + 2 * sum + b) << endl;
  39.  
  40. sum = 0;
  41. for (int i = 1; i < N - 1; ++i) {
  42. double x = a + i * dx;
  43. if (i % 2 == 0)
  44. sum += 2 * f(x);
  45. else
  46. sum += 4 * f(x);
  47. }
  48. cout << "Метод Симпсона: " << (dx / 3) * (a + sum + b) << endl;
  49. }
  50.  
  51. void znak( double(*f)(double)) {//передала эту хуйню
  52. cout << "введите точку, в которой хотите найти значение функции \n ";
  53. int x;
  54. scanf_s("%d", &x);
  55. cout << "Значение в выбранной точке: " << f(x) << endl;
  56. }
  57.  
  58. int main() {
  59. setlocale(LC_CTYPE, "Russian");
  60. const int N = 10000;
  61. int k, p;
  62. cout << "Введите номер функции. sin(x), tan(x), или же квадрат икса \n";
  63. scanf_s("%d", &k);
  64. cout << "если хотите найти интеграл, нажмите 1 \n";
  65. scanf_s("%d", &p);
  66. if (p == 1)
  67. {
  68. switch (k)
  69. case 1:
  70. {
  71. integral(f1); break;
  72. case 2:
  73. integral(f2); break;
  74. case 3:
  75. integral(f3); break;
  76. default:
  77. printf("Неправильный ввод.\n");
  78. }
  79. }
  80. cout << "если хотите найти значение фунцкии, нажмите 1 \n";
  81. scanf_s("%d", &p);
  82. if (p == 1)
  83. {
  84. switch (k)
  85. case 1:
  86. {
  87. znak(f1); break;
  88. case 2:
  89. znak(f2); break;
  90. case 3:
  91. znak(f3); break;
  92. }
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement