Advertisement
SilentSpirit

Harward

Apr 22nd, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.53 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <chrono>
  4. #include <random>
  5. #include <string>
  6.  
  7. //Создаем глобальные переменные для  - Количества игроков, числа игрока, ПСА (половина среднего арифметического), Ближайшего числа
  8. int  g_numberOfPlayers, g_playerNumber, g_halfAvarage, g_smallestDif;
  9.  
  10. // Рандомим числа от 0 до num
  11. int random(int num)
  12. {
  13.     int seed1 = (int)(std::chrono::system_clock::now().time_since_epoch().count());
  14.  
  15.     std::minstd_rand0 random(seed1);
  16.     int randomResult = random() % num;
  17.     return randomResult;
  18. }
  19.  
  20. //Запрашиваем количество игроков
  21. void numberOfPlayers()
  22. {
  23.  
  24.     std::cout << "Enter ammount of players - ";
  25.     std::cin >> g_numberOfPlayers;
  26. }
  27.  
  28. //Запрашиваем число игрока
  29. void playerNumber()
  30. {
  31.  
  32.     std::cout << "Enter your number - ";
  33.     std::cin >> g_playerNumber;
  34. }
  35.  
  36. // Заполняем вектор случайными числами от 0 до ammount в колличестве равном ammount
  37. void fillVector(int ammount, std::vector<int> &players)
  38. {
  39.     for (size_t i = 0; i < ammount; ++i)
  40.         players.push_back(random(ammount));
  41.  
  42.     players[0] = g_playerNumber; // Помещаем число игрока в первую ячейку вектора
  43. }
  44.  
  45. // Выводим вектор
  46. void printVector(const std::vector<int> &players)
  47. {
  48.     for (size_t i = 0; i < players.size(); ++i)
  49.         std::cout << "Player #" << i + 1 << " - " << players[i] << std::endl;
  50. }
  51.  
  52. // Вычисляем ПСА
  53. void halfAvarage(const std::vector<int> &players)
  54. {
  55.     int sum = 0; // Создаем переменную для суммы всех чисел вектора
  56.  
  57.     for (int i = 0; i < players.size(); ++i) // Пробегаем по веткору
  58.         sum += players[i]; // Последовательно суммируем все числа вектора
  59.     std::cout << std::endl << "Sum is - " << sum << std::endl;
  60.     g_halfAvarage = sum / players.size() / 2; // Находим ПСА
  61.     std::cout << "Half avarage is - " << g_halfAvarage << std::endl;
  62. }
  63.  
  64. // Находим ближайшее число в векторе к ПСА
  65. void findNearest(int halfAvarage, const std::vector<int> &players)
  66. {
  67.     g_smallestDif = abs(players[0] - g_halfAvarage);
  68.     for (int i = 0; i < players.size(); ++i)
  69.         if (g_smallestDif > abs(players[i] - g_halfAvarage))
  70.             g_smallestDif = abs(players[i] - g_halfAvarage);
  71.    
  72.     std::cout << "Nearest is - " << g_smallestDif + g_halfAvarage << std::endl << std::endl;
  73.  
  74. }
  75.  
  76. // Находим победителей и выводим их
  77. void winners(const std::vector<int> players)
  78. {
  79.     for (int i = 0; i < players.size(); ++i)
  80.         if (abs(players[i] - g_halfAvarage) == g_smallestDif)
  81.             std::cout << "Winner is Player #" << i + 1 << " With - " << players[i] << std::endl;
  82. }
  83.  
  84.  
  85. int main()
  86. {
  87.     numberOfPlayers(); // Запрашиваем количество игроков
  88.     playerNumber(); // Запрашиваем число игрока
  89.  
  90.     std::vector<int> players; // Создаем вектор
  91.     fillVector(g_numberOfPlayers, players); // Заполняем вектор числами игроков
  92.  
  93.     printVector(players); // Выводим вектор
  94.  
  95.     halfAvarage(players); // Вычисляем ПСА
  96.  
  97.     findNearest(g_halfAvarage, players); // Находим ближайшее к ПСА
  98.  
  99.     winners(players); // Находим победителей и выводим их
  100.  
  101.  
  102.  
  103.     system("pause");
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement