aLT22

4semlab1 (C++)

Feb 17th, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 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);
  12.  
  13. // Само тело нашей программы
  14. int main () {
  15.     setlocale(LC_ALL, "Russian");
  16.     int N,E;
  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) << endl;
  30.         system("pause");
  31.         return 0;
  32.     }
  33. }
  34. // Конец тела программы
  35.  
  36. // Раздел описания всех функций, кроме функции main
  37. // Функция вычисления факториала числа
  38. int Factorial (int iterator) {
  39.     int Fact = 1;
  40.     for (int k = 1; k <= iterator; k++) {
  41.         Fact = Fact * k;
  42.     }
  43.     return Fact;
  44. }
  45.  
  46. // Функция вычисления "двойного" факториала числа
  47. int DoubleFactorial (int iterator) {
  48.     int Fact = 1;
  49.     if (iterator%2 == 0){
  50.         for (int k = 2; k <= iterator; k+=2){
  51.             Fact = Fact * k;
  52.         }
  53.         return Fact;
  54.     } else {
  55.         for (int k = 1; k <= iterator; k+=2){
  56.             Fact = Fact * k;
  57.         }
  58.         return Fact;
  59.     }
  60. }
  61.  
  62. // Функция вычисления суммы всех элементов последовательности
  63. double CounterN (int N, int x) {
  64.     double SigmaN = 0;
  65.     for (int i = 1; i <= N; i++) {
  66.         SigmaN = SigmaN + (pow(-1,i) * pow(cos(x),(i/2)) * DoubleFactorial(i)) / (Factorial(i+1));
  67.     }
  68.     return SigmaN;
  69. }
  70.  
  71. // Функция вычисления элементов последовательности, превосходящих по абсолютной величине некую константу Е
  72. double CounterE (int N, int x, int E) {
  73.     double SigmaE = 0;
  74.     for (int i = 1; i<= N; i++) {
  75.         if (abs((pow(-1,i) * pow(cos(x),(i/2)) * DoubleFactorial(i)) / (Factorial(i+1))) > E) {
  76.             SigmaE = SigmaE + (pow(-1,i) * pow(cos(x),(i/2)) * DoubleFactorial(i)) / (Factorial(i+1));
  77.         }
  78.         else {
  79.             continue;
  80.         }
  81.     }
  82.     return SigmaE;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment