Advertisement
EWTD

Alina's Lab

Oct 5th, 2021
1,206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.54 KB | None | 0 0
  1. //#include "stdafx.h"
  2. //#include <conio.h>
  3. #include <cmath>
  4. #include <clocale>
  5. #include <iostream>
  6. #include <functional>
  7. double count_n(const std::pair<std::int32_t,std::int32_t>& preconditions,std::size_t n, const std::function<double(double b, double c)>& relax){
  8.     double result, a = preconditions.first, b = preconditions.second;
  9.     if (n < 3){ return (n == 1? a:b); }
  10.     for(int i = 3; i <= n; i++){
  11.         result = relax(a, b);
  12.         a = b; b = result;
  13.     }
  14.     return result;
  15. }
  16. double relax_23(double b, double c){ return sin(c) + 10*b; }
  17. double relax_24(double b, double c){ return sqrt(c) + sqrt(b); }
  18. double relax_25(double b, double c){ return sqrt(c+10) + (b+2)*(b+2); }
  19. double relax_26(double b, double c){ return (c+b)/10; }
  20. double relax_27(double b, double c){ return (c+10)*b; }
  21. double relax_28(double b, double c){ return (c*b)/10; }
  22.  
  23. int main(int argc, char* argv[]){
  24.     std::size_t task_number, number_index;
  25.     std::function<double(double b, double c)> relax_function;
  26.     std::pair<std::int32_t,std::int32_t> preconditions;
  27.     //std::setlocale(LC_ALL,"Russian")
  28.     while(true){
  29.         std::cout << "Введите номер последовательности:>";
  30.         std::cin >> task_number;
  31.         std::cout << "Введите номер числа в последовательности:>";
  32.         std::cin >> number_index;
  33.         switch (task_number) {
  34.             case 23:
  35.                 relax_function = relax_23;
  36.                 preconditions = {0,1};
  37.                 break;
  38.             case 24:
  39.                 relax_function = relax_24;
  40.                 preconditions = {0,1};
  41.                 break;
  42.             case 25:
  43.                 relax_function = relax_25;
  44.                 preconditions = {0,1};
  45.                 break;
  46.             case 26:
  47.                 relax_function = relax_26;
  48.                 preconditions = {0,1};
  49.                 break;
  50.             case 27:
  51.                 relax_function = relax_27;
  52.                 preconditions = {10,1};
  53.                 break;
  54.             case 28:
  55.                 relax_function = relax_28;
  56.                 preconditions = {1,2};
  57.                 break;
  58.             default:
  59.                 std::cout << "Неверный номер последовательности.\n";
  60.                 return 0;
  61.         }
  62.         printf("В последовательности %lu число под номером %lu = %f\n",task_number,number_index, count_n(preconditions,number_index,relax_function));
  63.     }
  64.     //getch();
  65.     return 0;
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement