Advertisement
Garey

Danny_Test4

Apr 24th, 2018
508
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.48 KB | None | 0 0
  1. // Danny_Test4.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. auto setcolor(unsigned short , unsigned short &) -> void;
  6. auto generate_numbers(int **, size_t const &) -> void;
  7. auto happy_numbers(int **, size_t const) -> void;
  8.  
  9. int main()
  10. {
  11.     size_t choice, array_size;
  12.  
  13.     int **lottery = nullptr;
  14.     unsigned short val;
  15.  
  16.     do {
  17.         system("cls");
  18.         setcolor(15, val);
  19.         cout << "Menu: \n\n";
  20.         cout << "[1] Generate numbers\n";
  21.         cout << "[2] Happy numbers\n\n";
  22.         cout << "[0] Exit\n";
  23.  
  24.         do {
  25.             cout << "\nYour choice: ";
  26.             cin >> choice;
  27.         } while (choice < 0 || choice > 9 || !cin);
  28.  
  29.         switch (choice) {
  30.             case 1:
  31.                 system("cls");
  32.  
  33.                 do {
  34.                     cout << "Enter size of lottery numbers: ";
  35.                     cin >> array_size;
  36.                 } while (!cin || array_size < 50 || array_size > 100);
  37.  
  38.                 lottery = new int*[array_size];
  39.  
  40.                 for (size_t i = 0; i < array_size; i++)
  41.                     lottery[i] = new int[6];
  42.  
  43.                 generate_numbers(lottery, array_size);
  44.  
  45.                 cout << "\n\nPress any key to get back to the menu...";
  46.                 _getch();
  47.                 break;
  48.             case 2:
  49.                 system("cls");
  50.  
  51.                 if (lottery == nullptr) {
  52.                     cout << "First input the array!";
  53.  
  54.                     cout << "\n\nPress any key to get back to the menu...";
  55.                     _getch();
  56.                     break;
  57.                 }
  58.  
  59.                 happy_numbers(lottery, array_size);
  60.  
  61.                 cout << "\n\nPress any key to get back to the menu...";
  62.                 _getch();
  63.                 break;
  64.         }
  65.     } while (choice != 0);
  66.  
  67.     return 0;
  68. }
  69.  
  70. auto generate_numbers(int **array, size_t const &array_size) -> void {
  71.  
  72.     random_device rd;
  73.     mt19937 gen(rd());
  74.     uniform_int_distribution<> dist(0, 9);
  75.  
  76.     unsigned short val;
  77.  
  78.     auto setTimeout([=](size_t ms) { Sleep(ms); });
  79.  
  80.     cout << endl;
  81.  
  82.     for (size_t i = 0; i < array_size; i++)
  83.         for (size_t j = 0; j < 6; j++)
  84.             array[i][j] = dist(gen);
  85.  
  86.     for (size_t i = 0; i < array_size; i++) {
  87.         cout << setw(5) << "[" << i << "] ";
  88.        
  89.         for (size_t j = 0; j < 6; j++)
  90.             cout <<  array[i][j];
  91.  
  92.         setcolor(i, val);
  93.  
  94.         if (i % 4 == 0)
  95.             cout << endl;
  96.  
  97.         setTimeout(250);
  98.     }
  99. }
  100.  
  101. auto happy_numbers(int **array, size_t const array_size) -> void {
  102.     size_t counter = 0;
  103.     unsigned short val;
  104.  
  105.     auto setTimeout([=](size_t ms) { Sleep(ms); });
  106.  
  107.     for (size_t i = 0; i < array_size; i++) {
  108.  
  109.     int sum1(0), sum2(0);
  110.         setcolor(i, val);
  111.  
  112.         for (size_t j = 0; j < 6; j++)
  113.             if (j > 2)
  114.                 sum1 += array[i][j];
  115.             else
  116.                 sum2 += array[i][j];
  117.  
  118.         if (sum1 == sum2) {
  119.             counter++;
  120.             cout << "\n\nThe number ";
  121.            
  122.             for (size_t j = 0; j < 6; j++)
  123.                 cout << array[i][j];
  124.  
  125.             cout << " is a happy number!\n";
  126.  
  127.             cout << "The sum of the first three numbers is " << sum2 << " and the sum of the last three numbers is " << sum1;
  128.         }
  129.  
  130.         setTimeout(250);
  131.     }
  132.     setcolor(15, val);
  133.          
  134.     if (counter > 0)
  135.         cout << "\n\nThere are " << counter << " happy numbers!";
  136.     else
  137.         cout << "There are no happy numbers!";
  138. }
  139.  
  140. auto sets(int **array, size_t const array_size) {
  141.     unsigned short val;
  142.  
  143.     auto setTimeout([=](size_t ms) { Sleep(ms); });
  144.  
  145.     size_t counter1(0), counter2(0);
  146.  
  147.     for (size_t i = 0; i < array_size; i++) {
  148.         string number;
  149.  
  150.         for (size_t j = 0; j < 6; j++)
  151.             number += array[i][j];
  152.  
  153.  
  154.         if (stoi(number) % 2 == 0)
  155.             counter1++;
  156.         else if (stoi(number) % 4 == 0)
  157.             counter2++;
  158.     }
  159.  
  160. }
  161.  
  162. auto setcolor(unsigned short color, unsigned short &predishen) -> void       // функция за задаване на цвят чрез число и допълнителна променлива за проверка
  163. {
  164.     random_device rd;                               // Сийдър за генератора
  165.     mt19937 gen(rd());                              // Генератор на случайни числа
  166.     uniform_int_distribution<> dist(9, 15);         // Генериране на случайни числа в зададен интервал
  167.  
  168.     if (color < 9 || color > 15) {                  // Избира само ярки цветове
  169.         color = dist(gen);                          // Цвета става случайно число в интервала от 9 до 15 включително
  170.  
  171.         while (color == predishen) {                // проверяваме предишният цвят дали съвпада с текущият
  172.             color = dist(gen);                      // Ако съвпада, го генерираме наново, докато стане различен
  173.         }
  174.     }
  175.  
  176.     predishen = color;                              // текущият цвят става предишен и продължаваме напред
  177.  
  178.     HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
  179.     SetConsoleTextAttribute(hcon, color);
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement