Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. setlocale(LC_ALL, "Russian");
  10. float x, k, st, f, s, r, m;
  11. double e;
  12. float t1, t2;
  13.  
  14. do // проверка на ввод х
  15. {
  16. system("cls");
  17. fflush(stdin);
  18. cout << "Добро пожаловать в программу для вычисления функции sh(x) с точностью e." <<endl;
  19. cout << "Определяем х. Введите число от 1 до 12: "; t1 = scanf("%f", &x);
  20. }
  21. while ((x < 1) || (x > 12) || (t1 == 0));
  22.  
  23. do // проверка на ввод е
  24. {
  25. system("cls");
  26. fflush(stdin);
  27. cout << "Добро пожаловать в программу для вычисления функции sh(x) с точностью e." <<endl;
  28. cout << "Определяем х. Введите число от 1 до 12: " << x << endl;
  29. cout << "Определяем е. Введите точность от 0,0001 до 0,1: "; t2 = scanf("%lf", &e);
  30. }
  31. while ((e < 0.0001) || (e > 0.1) || (t2 == 0));
  32.  
  33. s = x;
  34. k = 3; // степень первого числителя равна 3
  35.  
  36. while (1)
  37. {
  38. cout << "-------------------------------------------" << endl;
  39. st = 1; // числитель
  40. for (int i = 1; i<= k; i++)
  41. {st = st * x;}
  42. cout << "Вычисляем числитель. " << x << " в степени " << k << " = "<< st << endl;
  43.  
  44. f = 1; // знаменатель
  45. for (int i = 1; i<= k; i++)
  46. { f = f * i; }
  47. cout << "Вычисляем знаменатель. Фрактал " << x << " = " << f << endl;
  48.  
  49. m = st / f;
  50. s = s + (st / f); //подсчет суммы
  51. cout << "Сравниваем полученный элемент суммы " << st << " / " << f << " = " << m << " с точностью " << e << endl;
  52. cout << "Полученная сумма: " << s << endl;
  53.  
  54.  
  55. if (fabs(st/f) <= e)
  56. { break; }
  57.  
  58. k = k+2; // меняем степень на каждом шаге цикла
  59. }
  60. cout << "-------------------------------------------" << endl;
  61. cout << "Вычисления прекращаются тогда, когда очередной элемент суммы не превышает точность " << e << endl;
  62. cout << "-------------------------------------------" << endl;
  63. r = ((exp(x)-exp(-x))/2.0); // табличная формула нахождения sh(x)
  64. cout << "Полученный sh(" << x << ")= " << s << endl;
  65. cout << "Табличное значение sh(" << x << ")= " << r << endl; // для проверки правильности работы алгоритма
  66. system("pause");
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement