Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <chrono>
- #include <random>
- #include <string>
- //Создаем глобальные переменные для - Количества игроков, числа игрока, ПСА (половина среднего арифметического), Ближайшего числа
- int g_numberOfPlayers, g_playerNumber, g_halfAvarage, g_smallestDif;
- // Рандомим числа от 0 до num
- int random(int num)
- {
- int seed1 = (int)(std::chrono::system_clock::now().time_since_epoch().count());
- std::minstd_rand0 random(seed1);
- int randomResult = random() % num;
- return randomResult;
- }
- //Запрашиваем количество игроков
- void numberOfPlayers()
- {
- std::cout << "Enter ammount of players - ";
- std::cin >> g_numberOfPlayers;
- }
- //Запрашиваем число игрока
- void playerNumber()
- {
- std::cout << "Enter your number - ";
- std::cin >> g_playerNumber;
- }
- // Заполняем вектор случайными числами от 0 до ammount в колличестве равном ammount
- void fillVector(int ammount, std::vector<int> &players)
- {
- for (size_t i = 0; i < ammount; ++i)
- players.push_back(random(ammount));
- players[0] = g_playerNumber; // Помещаем число игрока в первую ячейку вектора
- }
- // Выводим вектор
- void printVector(const std::vector<int> &players)
- {
- for (size_t i = 0; i < players.size(); ++i)
- std::cout << "Player #" << i + 1 << " - " << players[i] << std::endl;
- }
- // Вычисляем ПСА
- void halfAvarage(const std::vector<int> &players)
- {
- int sum = 0; // Создаем переменную для суммы всех чисел вектора
- for (int i = 0; i < players.size(); ++i) // Пробегаем по веткору
- sum += players[i]; // Последовательно суммируем все числа вектора
- std::cout << std::endl << "Sum is - " << sum << std::endl;
- g_halfAvarage = sum / players.size() / 2; // Находим ПСА
- std::cout << "Half avarage is - " << g_halfAvarage << std::endl;
- }
- // Находим ближайшее число в векторе к ПСА
- void findNearest(int halfAvarage, const std::vector<int> &players)
- {
- g_smallestDif = abs(players[0] - g_halfAvarage);
- for (int i = 0; i < players.size(); ++i)
- if (g_smallestDif > abs(players[i] - g_halfAvarage))
- g_smallestDif = abs(players[i] - g_halfAvarage);
- std::cout << "Nearest is - " << g_smallestDif + g_halfAvarage << std::endl << std::endl;
- }
- // Находим победителей и выводим их
- void winners(const std::vector<int> players)
- {
- for (int i = 0; i < players.size(); ++i)
- if (abs(players[i] - g_halfAvarage) == g_smallestDif)
- std::cout << "Winner is Player #" << i + 1 << " With - " << players[i] << std::endl;
- }
- int main()
- {
- numberOfPlayers(); // Запрашиваем количество игроков
- playerNumber(); // Запрашиваем число игрока
- std::vector<int> players; // Создаем вектор
- fillVector(g_numberOfPlayers, players); // Заполняем вектор числами игроков
- printVector(players); // Выводим вектор
- halfAvarage(players); // Вычисляем ПСА
- findNearest(g_halfAvarage, players); // Находим ближайшее к ПСА
- winners(players); // Находим победителей и выводим их
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement