Advertisement
MargaritaOwl

Tailor+Arth

May 14th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.60 KB | None | 0 0
  1. #include<iostream>
  2. #include<math.h>
  3. #include<locale>
  4. #include <iomanip>
  5. using namespace std;
  6.  
  7.  
  8. double proverka1(double n)
  9. {
  10.     bool flag = 0;
  11.     for (int count = 1; flag == 0; count++)
  12.     {
  13.         if (count != 1)
  14.             cin >> n;
  15.  
  16.         if (!cin)
  17.         {
  18.             cout << "Введенные данные должны быть числом, а не текстом! Введите еще раз: ";
  19.             cin.clear();
  20.             cin.ignore(10000, '\n');
  21.         }
  22.         else
  23.             flag = 1;
  24.  
  25.     }
  26.     return n;
  27. }
  28. double proverka2()
  29. {
  30.     double n;
  31.  
  32.     bool exit = true;
  33.  
  34.     while (exit)
  35.     {
  36.         cin >> n;
  37.         if (!cin)
  38.         {
  39.             cout << "Введенные данные должны быть числом, а не текстом! Введите еще раз: ";
  40.             cin.clear();
  41.             cin.ignore(10000, '\n');
  42.         }
  43.         else
  44.             if (n == 0)
  45.             {
  46.                 cout << "Введеное число не должно быть нулем!" << endl;
  47.             }
  48.             else
  49.                 exit = false;
  50.     }
  51.     return n;
  52. }
  53.  
  54. void function(double str, double en, double st, bool& countOf)
  55. {
  56.     double multy;
  57.     double e = 2.7;
  58.  
  59.  
  60.     if (countOf)
  61.     {
  62.         cout << "Введите еще раз параметры командной строки: ";
  63.         cin >> str >> en >> st;
  64.     }
  65.  
  66.  
  67.     proverka1(str);
  68.     proverka1(en);
  69.     proverka1(st);
  70.  
  71.  
  72.     if (str > en)
  73.     {
  74.         double tmp = str;
  75.         str = en;
  76.         en = tmp;
  77.  
  78.         st = fabs(st);
  79.     }
  80.     else
  81.     {
  82.         if (str < en && st < 0)
  83.         {
  84.             cout << "Вы хотите видеть возрастающую последовательность, но ввели шаг меньше нуля. Введите шаг больше нуля: ";
  85.             st = proverka2();
  86.         }
  87.     }
  88.  
  89.     for (double x = str; x <= en; x += st)
  90.     {
  91.  
  92.  
  93.         if (x > 5 && x < 10)
  94.         {
  95.             multy = (pow(pow((e), (-2. + x)), 1. / 5.)*(1 / (pow(x*x + pow(x, 4), 1. / 2.) + log(fabs(x - 3.14)))));
  96.         }
  97.         else
  98.             if (x >(-3) && x <= 2)
  99.             {
  100.                 if (!(abs(x) < 0.0000000001))
  101.                     multy = pow(x, (-25.));
  102.             }
  103.             else
  104.             {
  105.                 multy = pow(x, (30.));
  106.             }
  107.  
  108.         if (abs(x) < 0.000001)
  109.         {
  110.             cout << "F(0) не удовлетворяет ОДЗ" << endl;
  111.         }
  112.         else
  113.             cout << "F(" << x << ")=" << multy << endl;
  114.     }
  115.     countOf = true;
  116. }
  117.  
  118.  
  119. void tailor()
  120. {
  121.     double x = 0, eps;
  122.     double n;
  123.     while (!(fabs(x)>1))
  124.     {
  125.         cout << "Введите x(|x|>1): ";
  126.         cin >> x;
  127.         x = proverka1(x);
  128.     }
  129.     cout << "Enter epsilon = ";
  130.     eps = proverka2();
  131.  
  132.     double tempeps = eps;
  133.     int neps = 0;
  134.     for (; (((int)tempeps ==0)); neps++)
  135.         tempeps *= 10;
  136. double sum = 1. / x;
  137.     double num = 1. / x;
  138.     for (n = 0; n<4; n++)
  139.     {
  140.         num *= ((2.*n + 1.) / ((2.*n + 3.)*x*x));
  141.         sum += num;
  142.     }
  143.     cout << fixed;
  144.     cout << setprecision(neps);
  145.     cout << "Сумма первых пяти членов = " << sum << endl;
  146.  
  147.     n = 0;
  148.     if (fabs(x) > eps)
  149.     {
  150.         sum = 1. / x;
  151.         num = 1. / x;
  152.         for (; (fabs(num*((2.*n + 1.) / ((2.*n + 3.)*x*x)))) > eps; n++)
  153.         {
  154.             num *= ((2.*n + 1.) / ((2.*n + 3.)*x*x));
  155.             sum += num;
  156.         }
  157.     }
  158.     else sum = 0;
  159.  
  160.     //if ((int)sum != 0)
  161.         //neps++;
  162.  
  163.     cout << "Сумма с точностью эпсилон = " << sum << endl << "Кол-во итераций: " << n << endl;
  164.     cout << "Стандартной функцией = " << (0.5 * log((x + 1) / (x - 1))) << endl;
  165. }
  166. int main(int argc, char *argv[])
  167. {
  168.     setlocale(LC_ALL, "rus");
  169.     int input;
  170.     bool whileExit = true, countOf = false;
  171.  
  172.     for (int count = 1; whileExit; count++)
  173.     {
  174.         cout << "Выберите номер задания" << endl;
  175.         cout << "1. Задание 1." << endl;
  176.         cout << "2. Задание 2." << endl;
  177.         cout << "3. Выход." << endl;
  178.         cout << "Ваш выбор: ";
  179.         cin >> input;
  180.         switch (input)
  181.         {
  182.         case 1:
  183.         {
  184.             double str, en, st;
  185.  
  186.             if (argc == 1)
  187.             {
  188.                 if (countOf == false)
  189.                 {
  190.                     cout << "Вы ничего не ввели в командной строке. ";
  191.                     cout << "Введите еще раз параметры командной строки: " << endl;
  192.                     cout << "Начало: " << endl;
  193.                     cin >> str;
  194.                     str = proverka1(str);
  195.                     cout << "Конец: " << endl;
  196.                     cin >> en;
  197.                     en = proverka1(en);
  198.                     cout << "Шаг: " << endl;
  199.                     st = proverka2();
  200.                 }
  201.                 else
  202.                 {
  203.                     str = 0;
  204.                     en = 0;
  205.                     st = 0;
  206.                 }
  207.             }
  208.             else
  209.             {
  210.                 str = atof(argv[1]);
  211.                 en = atof(argv[2]);
  212.                 st = atof(argv[3]);
  213.             }
  214.  
  215.             function(str, en, st, countOf);
  216.  
  217.             break;
  218.         }
  219.         case 2:
  220.         {
  221.             tailor();
  222.             break;
  223.         }
  224.         case 3:
  225.         {
  226.             whileExit = false;
  227.             break;
  228.         }
  229.         default: cout << "Попробуйте еще раз! Задание под таким номером не найдено!"; break;
  230.         }
  231.     }
  232.     system("pause");
  233.     return 0;
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement