aLT22

4semlab1 (C++) BETA

Feb 19th, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. /* Объявляем функции факториалов и вычислений сумм, создаем их прототипы */
  7.  
  8. int Factorial (int iterator);
  9. int DoubleFactorial (int iterator);
  10. double CounterN (int N, int x);
  11. double CounterE (int N, int x, int E, int &count);
  12.  
  13. // Само тело нашей программы
  14. int main () {
  15.     setlocale(LC_ALL, "Russian");
  16.     int N,E,count = 0;
  17.     double x;
  18.     cout << " Please enter number of elements: ";
  19.     cin >> N;
  20.     cout << endl << "Enter constant E: ";
  21.     cin >> E;
  22.     cout << endl << "Enter argument x: ";
  23.     cin >> x;
  24.     if (N <= 0) {
  25.         cout << "Invalid N!" << endl;
  26.         return 0;
  27.     } else {
  28.         cout << "Сумма всех N элементов равна " << CounterN(N,x) << endl;
  29.         cout << "Сумма элементов, превосходящих по абсолютной величине некое E равна " << CounterE(N, x, E, count) << endl;
  30.         if (CounterN(N,x) > CounterE(N,x,E,count)) {
  31.             cout << "Сумма N слагаемых больше, чем сумма слагаемых с Е" << endl;
  32.             system ("pause");
  33.             return 0;
  34.         } else if (CounterN(N,x) == CounterE(N,x,E,count)) {
  35.             cout << "Суммы равны" << endl;
  36.             system ("pause");
  37.             return 0;
  38.         } else {
  39.             cout << "Сумма с Е больше суммы с N слагаемыми, на " << count << " слагаемых" << endl;
  40.             system ("pause");
  41.             return 0;
  42.         }
  43.     }
  44. }
  45. // Конец тела программы
  46.  
  47. // Раздел описания всех функций, кроме функции main
  48. // Функция вычисления факториала числа
  49. int Factorial (int iterator) {
  50.     int Fact = 1;
  51.     for (int k = 1; k <= iterator; k++) {
  52.         Fact = Fact * k;
  53.     }
  54.     return Fact;
  55. }
  56.  
  57. // Функция вычисления "двойного" факториала числа
  58. int DoubleFactorial (int iterator) {
  59.     int Fact = 1;
  60.     if (iterator%2 == 0) {
  61.         for (int k = 2; k <= iterator; k+=2) {
  62.             Fact = Fact * k;
  63.         }
  64.         return Fact;
  65.     } else {
  66.         for (int k = 1; k <= iterator; k+=2) {
  67.             Fact = Fact * k;
  68.         }
  69.         return Fact;
  70.     }
  71. }
  72.  
  73. // Функция вычисления суммы всех эелементов последовательности
  74. double CounterN (int N, int x) {
  75.     double SigmaN = 0;
  76.     for (int i = 1; i <= N; i++) {
  77.         SigmaN = SigmaN + (pow(-1,i) * pow(cos(x),(i/2)) * DoubleFactorial(i)) / (Factorial(i+1));
  78.     }
  79.     return SigmaN;
  80. }
  81.  
  82. // Функция вычисления элементов последовательности, превосходящих по абсолютной величине некую константу Е
  83. double CounterE (int N, int x, int E, int &count) {
  84.     double SigmaE = 0;
  85.     for (int i = 1; i<= N; i++) {
  86.         if (abs((pow(-1,i) * pow(cos(x),(i/2)) * DoubleFactorial(i)) / (Factorial(i+1))) > E && abs((pow(-1,i) * pow(cos(x),(i/2)) * DoubleFactorial(i)) / (Factorial(i+1))) > E/10) {
  87.             SigmaE = SigmaE + (pow(-1,i) * pow(cos(x),(i/2)) * DoubleFactorial(i)) / (Factorial(i+1));
  88.             count++;
  89.         }
  90.         else {
  91.             continue;
  92.         }
  93.     }
  94.     return SigmaE;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment