Advertisement
Rock_Hero

Игра высчитай квадратный корень

Dec 15th, 2020
435
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.64 KB | None | 0 0
  1. #include<iostream>
  2. #include<cmath>
  3. #include<algorithm>
  4. #include<vector>
  5. #include<ctime>
  6. #include"Header.h"
  7.  
  8.  
  9. using std::cin;
  10. using std::cout;
  11. using std::vector;
  12.  
  13.  
  14. void Square_number(vector<int> &arr,int amount_of_numbers)
  15. {
  16.     for (int i = 0; i < amount_of_numbers; i++)
  17.     {
  18.         arr[i] = pow(arr[i],2);
  19.     }
  20.  
  21.  
  22. }
  23.  
  24. void Multyply_number(vector<int>& arr, int amount_of_numbers, int rand_multyply)
  25. {
  26.     for (int i = 0; i < amount_of_numbers; i++)
  27.     {
  28.         arr[i] = arr[i]* rand_multyply;
  29.     }
  30.  
  31.  
  32. }
  33.  
  34. void Filling_Array(vector<int>& arr, int amount_of_numbers,int start_value)
  35. {
  36.  
  37.     for (int i = 0; i < amount_of_numbers; i++)
  38.     {
  39.         arr[i] = start_value + i;
  40.     }
  41.  
  42. }
  43.  
  44. void Gameover(char restart_s,bool &restart)
  45. {
  46.     if (restart_s == 'Y' || restart_s == 'y'|| restart_s == 'У' || restart_s == 'у')
  47.     {
  48.         restart = false;
  49.     }
  50.     else
  51.     {
  52.         system("cls<NUL");
  53.         cout << "Спасибо за игру всего хорошего!" << std::endl;
  54.         system("pause");
  55.         exit(1);
  56.     }
  57. }
  58.  
  59. int findClosestNumber(const vector<int>& arr, int player_number)
  60. {
  61.     return *std::min_element(arr.begin(), arr.end(), [&](int a, int b) {
  62.         return (std::abs(a - player_number) < std::abs(b - player_number));
  63.         });
  64. }
  65.  
  66. int main()
  67. {
  68.     setlocale(0, "");
  69.     bool  restart = true;
  70.     int start_value = 0, amount_of_numbers = 0, rand_multyply=0;
  71.     srand(time(NULL));
  72.    
  73.    
  74.    
  75.     while (true)
  76.     {
  77.         restart = true;
  78.         system("cls<NUL");
  79.  
  80.         cout << "Вас приветствует игра \"Квадрат чисел\"" << std::endl
  81.              << "Ваша задача ввести 2 числа. Первое число это стартовое значение." << std::endl
  82.              << "Второе это сколько чисел вы хотите отгадать" << std::endl;
  83.         cout << "Суть игры проста,от первого числа будет сгенерирован ряд чисел прим 4,5,6,7 ..." << std::endl
  84.              << "Все числа ряда будут возведены в квадрат,ваша задача угадать все числа ряда.\n" << std::endl;
  85.  
  86.         cout << "Введите первое число - ";
  87.         cin >> start_value;
  88.         Proverka(start_value);
  89.         cout << "Введите второе число - ";
  90.         cin >> amount_of_numbers;
  91.         Proverka(amount_of_numbers);
  92.         cout << "\n\n\n";
  93.  
  94.         rand_multyply = 2 + rand() % (4 - 2);
  95.  
  96.         cout << "В игру вмешался Бог рандома!Все ваши квадратные числа были умножены на " << rand_multyply << "!" << std::endl;
  97.         system("pause");
  98.         cout << "\n\n";
  99.  
  100.         vector<int>array_of_numbers;
  101.         array_of_numbers.resize(amount_of_numbers);
  102.  
  103.  
  104.         Filling_Array(array_of_numbers, amount_of_numbers, start_value);
  105.         Square_number(array_of_numbers, amount_of_numbers);
  106.         Multyply_number(array_of_numbers, amount_of_numbers, rand_multyply);
  107.  
  108.         cout << "Ну что же пришло время угадывать числа!Начинай вводить их по одному числу за раз." << std::endl;
  109.  
  110.         while (restart)
  111.         {
  112.            
  113.  
  114.             int player_number = 0;
  115.  
  116.             cin >> player_number;
  117.             Proverka(player_number);
  118.  
  119.  
  120.             auto found = (std::find(array_of_numbers.begin(), array_of_numbers.end(), player_number));
  121.  
  122.  
  123.  
  124.  
  125.             if (found != array_of_numbers.end())
  126.             {
  127.                 array_of_numbers.erase(found);
  128.                 if (array_of_numbers.size())
  129.                 {
  130.                     cout << "Вы ввели верное число! Осталось угадать " << array_of_numbers.size() << " чисел!" << std::endl;
  131.                 }
  132.             }
  133.             else
  134.             {
  135.                 char restart_s;
  136.  
  137.                 cout << "Увы вы проиграли.Ближайшее число к тому что вы написал это - "<< findClosestNumber(array_of_numbers, player_number) <<std::endl;
  138.                 cout<< "Хотите ли начать сначала ? Y / N" << std::endl;
  139.  
  140.                 cin >> restart_s;
  141.  
  142.                 Proverka(restart_s);
  143.  
  144.                 Gameover(restart_s, restart);
  145.  
  146.             }
  147.  
  148.  
  149.  
  150.  
  151.             if (array_of_numbers.size() == 0)
  152.             {
  153.                 char restart_s;
  154.                 cout<<"\nВы выиграли,поздравляю вас! Хотите ли начать сначала ? Y / N" << std::endl;
  155.  
  156.                 cin >> restart_s;
  157.  
  158.                 Proverka(restart_s);
  159.  
  160.                 Gameover(restart_s, restart);
  161.  
  162.             }
  163.  
  164.  
  165.  
  166.         }
  167.  
  168.     }
  169.  
  170.  
  171.     return 1;
  172. }
  173.  
  174.  
  175.  
  176.  
  177. Heder -
  178. #pragma once
  179.  
  180. template <typename T>
  181. T Proverka(T& x)
  182. {
  183.  
  184.  
  185.  
  186.  
  187.  
  188.     if (std::cin.fail())
  189.     {
  190.         std::cin.clear();
  191.         std::cin.ignore(32767, '\n');
  192.         std::cout << "Вы ввели недопустимое значение.Повторите ввод." << std::endl;
  193.  
  194.         std::cin >> x;
  195.         return Proverka(x);
  196.     }
  197.     else
  198.     {
  199.         std::cin.ignore(32767, '\n');
  200.         return x;
  201.     }
  202.  
  203.  
  204.  
  205.  
  206. }
  207.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement