Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cmath>
- #include<algorithm>
- #include<vector>
- #include<ctime>
- #include"Header.h"
- using std::cin;
- using std::cout;
- using std::vector;
- void Square_number(vector<int> &arr,int amount_of_numbers)
- {
- for (int i = 0; i < amount_of_numbers; i++)
- {
- arr[i] = pow(arr[i],2);
- }
- }
- void Multyply_number(vector<int>& arr, int amount_of_numbers, int rand_multyply)
- {
- for (int i = 0; i < amount_of_numbers; i++)
- {
- arr[i] = arr[i]* rand_multyply;
- }
- }
- void Filling_Array(vector<int>& arr, int amount_of_numbers,int start_value)
- {
- for (int i = 0; i < amount_of_numbers; i++)
- {
- arr[i] = start_value + i;
- }
- }
- void Gameover(char restart_s,bool &restart)
- {
- if (restart_s == 'Y' || restart_s == 'y'|| restart_s == 'У' || restart_s == 'у')
- {
- restart = false;
- }
- else
- {
- system("cls<NUL");
- cout << "Спасибо за игру всего хорошего!" << std::endl;
- system("pause");
- exit(1);
- }
- }
- int findClosestNumber(const vector<int>& arr, int player_number)
- {
- return *std::min_element(arr.begin(), arr.end(), [&](int a, int b) {
- return (std::abs(a - player_number) < std::abs(b - player_number));
- });
- }
- int main()
- {
- setlocale(0, "");
- bool restart = true;
- int start_value = 0, amount_of_numbers = 0, rand_multyply=0;
- srand(time(NULL));
- while (true)
- {
- restart = true;
- system("cls<NUL");
- cout << "Вас приветствует игра \"Квадрат чисел\"" << std::endl
- << "Ваша задача ввести 2 числа. Первое число это стартовое значение." << std::endl
- << "Второе это сколько чисел вы хотите отгадать" << std::endl;
- cout << "Суть игры проста,от первого числа будет сгенерирован ряд чисел прим 4,5,6,7 ..." << std::endl
- << "Все числа ряда будут возведены в квадрат,ваша задача угадать все числа ряда.\n" << std::endl;
- cout << "Введите первое число - ";
- cin >> start_value;
- Proverka(start_value);
- cout << "Введите второе число - ";
- cin >> amount_of_numbers;
- Proverka(amount_of_numbers);
- cout << "\n\n\n";
- rand_multyply = 2 + rand() % (4 - 2);
- cout << "В игру вмешался Бог рандома!Все ваши квадратные числа были умножены на " << rand_multyply << "!" << std::endl;
- system("pause");
- cout << "\n\n";
- vector<int>array_of_numbers;
- array_of_numbers.resize(amount_of_numbers);
- Filling_Array(array_of_numbers, amount_of_numbers, start_value);
- Square_number(array_of_numbers, amount_of_numbers);
- Multyply_number(array_of_numbers, amount_of_numbers, rand_multyply);
- cout << "Ну что же пришло время угадывать числа!Начинай вводить их по одному числу за раз." << std::endl;
- while (restart)
- {
- int player_number = 0;
- cin >> player_number;
- Proverka(player_number);
- auto found = (std::find(array_of_numbers.begin(), array_of_numbers.end(), player_number));
- if (found != array_of_numbers.end())
- {
- array_of_numbers.erase(found);
- if (array_of_numbers.size())
- {
- cout << "Вы ввели верное число! Осталось угадать " << array_of_numbers.size() << " чисел!" << std::endl;
- }
- }
- else
- {
- char restart_s;
- cout << "Увы вы проиграли.Ближайшее число к тому что вы написал это - "<< findClosestNumber(array_of_numbers, player_number) <<std::endl;
- cout<< "Хотите ли начать сначала ? Y / N" << std::endl;
- cin >> restart_s;
- Proverka(restart_s);
- Gameover(restart_s, restart);
- }
- if (array_of_numbers.size() == 0)
- {
- char restart_s;
- cout<<"\nВы выиграли,поздравляю вас! Хотите ли начать сначала ? Y / N" << std::endl;
- cin >> restart_s;
- Proverka(restart_s);
- Gameover(restart_s, restart);
- }
- }
- }
- return 1;
- }
- Heder -
- #pragma once
- template <typename T>
- T Proverka(T& x)
- {
- if (std::cin.fail())
- {
- std::cin.clear();
- std::cin.ignore(32767, '\n');
- std::cout << "Вы ввели недопустимое значение.Повторите ввод." << std::endl;
- std::cin >> x;
- return Proverka(x);
- }
- else
- {
- std::cin.ignore(32767, '\n');
- return x;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement