Advertisement
Lavig

Підсумковий контроль (Завдання 5)

Dec 13th, 2024
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     SetConsoleOutputCP(1251);
  9.     int i{}, chosen_number{};
  10.     double accuracy{}, addition{}, sum{ 1 };
  11.     while (true) {
  12.         cout << "Введіть точність обчислення: ";
  13.         cin >> accuracy;
  14.         if (cin.fail() || accuracy <= 0) {
  15.             cin.clear();
  16.             cin.ignore(32767, '\n');
  17.             cout << "Точність обчислення було введено неправильно. Спробуйте ще раз!" << endl;
  18.             continue;
  19.         }
  20.         else {
  21.             break;
  22.         }
  23.     }
  24.     while (true) {
  25.         cout << "Введіть номер варіанту для виконання обчислення: " << endl;
  26.         cout << "1 - з використанням циклу for" << endl;
  27.         cout << "2 - з використанням циклу while" << endl;
  28.         cout << "3 - з використанням циклу do ... while" << endl;
  29.         cin >> chosen_number;
  30.         if (cin.fail() || cin.peek() != '\n' || chosen_number < 1 || chosen_number > 3) {
  31.             cin.clear();
  32.             cin.ignore(32767, '\n');
  33.             cout << "Номер варіанту було введено неправильно. Спробуйте ще раз!" << endl;
  34.             continue;
  35.         }
  36.         else {
  37.             break;
  38.         }
  39.     }
  40.     switch (chosen_number) {
  41.     case 1:
  42.         for (i = 1; ; i++) {
  43.             if (i % 3 != 0) {
  44.                 addition = pow(static_cast<double>(i) / ((i + 1) * (i + 2) * (i + 3)), i * 2);
  45.             }
  46.             else {
  47.                 addition = -(pow(static_cast<double>(i) / ((i + 1) * (i + 2) * (i + 3)), i * 2));
  48.             }
  49.             sum += addition;
  50.             if (fabs(addition) < accuracy) {
  51.                 break;
  52.             }
  53.         }
  54.         i++;
  55.         break;
  56.     case 2:
  57.         addition = accuracy + 1;
  58.         i = 1;
  59.         while (fabs(addition) > accuracy) {
  60.             if (i % 3 != 0) {
  61.                 addition = pow(static_cast<double>(i) / ((i + 1) * (i + 2) * (i + 3)), i * 2);
  62.             }
  63.             else {
  64.                 addition = -(pow(static_cast<double>(i) / ((i + 1) * (i + 2) * (i + 3)), i * 2));
  65.             }
  66.             sum += addition;
  67.             i++;
  68.         }
  69.         break;
  70.     case 3:
  71.         i = 1;
  72.         do {
  73.             if (i % 3 != 0) {
  74.                 addition = pow(static_cast<double>(i) / ((i + 1) * (i + 2) * (i + 3)), i * 2);
  75.             }
  76.             else {
  77.                 addition = -(pow(static_cast<double>(i) / ((i + 1) * (i + 2) * (i + 3)), i * 2));
  78.             }
  79.             sum += addition;
  80.             i++;
  81.         } while (fabs(addition) > accuracy);
  82.     }
  83.     cout << "Приблизне значення суми: " << sum << endl;
  84.     cout << "Кількість доданків: " << i << endl;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement