Advertisement
aLT22

4semlab1 (C++) GAMMA VERS

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