Advertisement
vladkostashuk

Laba_17_KS

Apr 11th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <conio.h>
  4. #include <locale>
  5.  
  6. using namespace std;
  7. HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
  8.  
  9. #pragma region Глобальні змінні
  10. int mass[50][50];
  11. int ind_mass = 10;
  12. int h = 5;
  13. int pv_menu = -1;
  14. #pragma endregion
  15.  
  16. #pragma region Функції
  17. void InputMas2();
  18. void OutputMas2();
  19. void Mas2Random();
  20. void Mas2Transpon();
  21. void Mas2Bottom();
  22. void MainMenu();
  23. void MasShah();
  24. #pragma endregion
  25.  
  26.  
  27. int main()
  28. {
  29.     #pragma region мова
  30.     SetConsoleCP(1251);
  31.     SetConsoleOutputCP(1251);
  32.     #pragma endregion
  33.  
  34.     // Ініціалізація головного меню
  35.     SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  36.     MainMenu();
  37.  
  38.     return 0;
  39. }
  40.  
  41. //Ф-ція головного меню
  42. void MainMenu()
  43. {
  44.     #pragma region запуск
  45.     STAD:
  46.     cout << "Введіть к-сть стовпців та рядків: "; cin >> h;
  47.     if (h < 2)
  48.     {
  49.         SetConsoleTextAttribute(handle, FOREGROUND_RED);
  50.         cout << "Помилка! К-сть рядків і столбців не може бути меншим 2!" << endl;
  51.         SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  52.         goto STAD;
  53.     }
  54.  
  55.  
  56.     REFD:
  57.     cout << "Як заповнити массив?\n[1] Рандомними значеннями [2] Ввести з клавіатури" << endl;
  58.     int l = 0; cin >> l;
  59.     if (l == 2)
  60.         InputMas2();
  61.     else if (l == 1)
  62.         Mas2Random();
  63.     else
  64.     {
  65.         SetConsoleTextAttribute(handle, FOREGROUND_RED);
  66.         cout << "Помилка немає такого пункта!" << endl;
  67.         SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  68.         goto REFD;
  69.     }
  70.  
  71.     #pragma endregion
  72.  
  73.     // Цикл меню
  74.     int p_menu = 0;
  75.     do
  76.     {
  77.         //Вивід тексту головного меню
  78.         p_menu = 0;
  79.         cout << endl << endl;
  80.         SetConsoleTextAttribute(handle, FOREGROUND_RED);
  81.         cout << "Головне меню" << endl;
  82.         SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  83.         cout << "1. Вивести массив" << endl;
  84.         cout << "2. Транспонувати массив" << endl;
  85.         cout << "3. Заповнити массив ранд значеннями" << endl;
  86.         cout << "4. Заповнити массив 0 та 1 по діагоналі" << endl;
  87.         cout << "5. Заповнити массив в шахматному порядку" << endl;
  88.         cout << "6. Exit" << endl;
  89.         SetConsoleTextAttribute(handle, FOREGROUND_RED);
  90.         cout << "> "; cin >> p_menu; //Ввід пункту меню
  91.         SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  92.  
  93.         //Перемикач на пункти меню
  94.         switch (p_menu)
  95.         {
  96.         case 1:
  97.         {
  98.                   OutputMas2();
  99.                   break;
  100.         }
  101.         case 2:
  102.         {
  103.                   Mas2Transpon();
  104.                   break;
  105.         }
  106.         case 3:
  107.         {
  108.                   Mas2Random();
  109.                   break;
  110.         }
  111.         case 4:
  112.         {
  113.                   Mas2Bottom();
  114.                   break;
  115.         }
  116.         case 5:
  117.         {
  118.                   MasShah();
  119.                   break;
  120.         }
  121.         case 6:
  122.             break;
  123.         default:
  124.             // Підсвідка
  125.             SetConsoleTextAttribute(handle, FOREGROUND_RED);
  126.             cout << "Даного пункта меню не існує!" << endl << endl;
  127.             SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  128.             break;
  129.         }
  130.  
  131.  
  132.     } while (p_menu != 6);
  133. }
  134.  
  135.  
  136. //Ф-ція вводу значень
  137. void InputMas2()
  138. {
  139.     SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  140.     cout << "Введення двохвимірного масиву розмірності " << h << endl;
  141.     SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  142.  
  143.     // Цикл X
  144.     for (int i = 0; i < h; i++)
  145.     {
  146.         // Цикл Y
  147.         for (int o = 0; o < h; o++)
  148.         {
  149.             //Запис значення з клавіатури в массив
  150.             cout << "mass[" << i << "][" << o << "]= "; cin >> mass[i][o];
  151.             //mass[i][o] = rand() % (100 - 50) - 50;
  152.         }
  153.     }
  154.  
  155.     // Підсвідка
  156.     SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  157.     cout << "Массив успышно заповнено!" << endl;
  158.     SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  159. }
  160.  
  161. //Ф-ція виводу значень
  162. void OutputMas2()
  163. {
  164.     SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  165.     cout << endl << "Вивід массиву" << endl;
  166.     SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  167.     // Цикл X
  168.     for (int i = 0; i < h; i++)
  169.     {
  170.         // Цикл Y
  171.         for (int o = 0; o < h; o++)
  172.         {
  173.             // Підсвідка
  174.             #pragma region color
  175.                 if (mass[i][o] == 1)
  176.                     SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  177.                 else if (mass[i][o] == 0)
  178.                     SetConsoleTextAttribute(handle, FOREGROUND_RED);
  179.             #pragma endregion
  180.            
  181.             //Вивід значення в точці X Y
  182.             cout << mass[i][o] << "\t";
  183.             SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  184.         }
  185.         // абзац
  186.         cout << endl;
  187.     }
  188. }
  189.  
  190. //Ф-ція ініціалізації массиву ранд значеннями
  191. void Mas2Random()
  192. {
  193.     cout << endl;
  194.     //Зманні максимуму та мінімуму
  195.     int max = 0, min = 0;
  196.     //Вивід повідомлення
  197.     cout << "Введіть мінімум і максимум рандому" << endl;
  198.     //Ввід мінімуму
  199.     cout << "Мінімум = "; cin >> min;
  200.     //Ввід максимуму ранд.
  201.     cout << "Максимум = "; cin >> max;
  202.  
  203.     // Цикл X
  204.     for (int i = 0; i < h; i++)
  205.     {
  206.         // Цикл Y
  207.         for (int o = 0; o < h; o++)
  208.         {
  209.             //Запис рандомного значення в массив
  210.             mass[i][o] = rand() % (max - min) - min;
  211.         }
  212.     }
  213. }
  214.  
  215. //Ф-ція транспонування массиву
  216. void Mas2Transpon()
  217. {
  218.     //Змінні
  219.     double s;
  220.  
  221.     //Цикл Х
  222.     for (int i = 0; i < h; i++)
  223.     {
  224.         //Цикл Y
  225.         for (int o = i + 1; o < h; o++)
  226.         {
  227.             //Міняєм місцями столбець і рядок
  228.             s = mass[i][o];
  229.             mass[i][o] = mass[o][i];
  230.             mass[o][i] = s;
  231.         }
  232.     }
  233.     // Підсвідка
  234.     SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  235.     cout << "Матрицю успішно транспоновано" << endl;
  236.     SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  237. }
  238.  
  239. //Ф-ція ініалізації матриці 0 та 1 по діагоналі
  240. void Mas2Bottom()
  241. {
  242.     //Цикл Х
  243.     for (int i = 0; i < h; i++)
  244.     {
  245.         // Цикл Y
  246.         for (int o = 0; o < h; o++)
  247.         {
  248.             //Паше - не трогати
  249.             if (i < o)
  250.             {
  251.                 //Запис в массив
  252.                 mass[i][o] = 0;
  253.             }
  254.             else
  255.             {
  256.                 //Запис в массив
  257.                 mass[i][o] = 1;
  258.             }
  259.         }
  260.     }
  261.  
  262.     // Підсвідка
  263.     SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  264.     cout << "Матрицю успішно змінено!" << endl;
  265.     SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  266. }
  267.  
  268. void MasShah()
  269. {
  270.     //Змінна
  271.     int d = 0;
  272.     //Цикл Х
  273.     for (int i = 0; i < h; i++)
  274.     {  
  275.         //Перевірка що і не дорівню є 0
  276.         if (i != 0)
  277.         {
  278.             //Задаємо значення 1 числу рядка
  279.             if (mass[i-1][0] == 0)
  280.                 d = 0;
  281.             else
  282.                 d = 1;
  283.         }
  284.  
  285.         // Цикл Y
  286.         for (int o = 0; o < h; o++)
  287.         {
  288.             //Перевірка на 0 чи 1
  289.             if (d == 0)
  290.             {
  291.                 //Записуємо в массив 1
  292.                 mass[i][o] = 1;
  293.                 //Д = 1
  294.                 d = 1;
  295.             }
  296.             else
  297.             {
  298.                 //Записуємо в массив 0
  299.                 mass[i][o] = 0;
  300.                 //Д = 0
  301.                 d = 0;
  302.             }
  303.         }
  304.        
  305.     }
  306.  
  307.     // Підсвідка
  308.     SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
  309.     cout << "Матрицю успішно змінено!" << endl;
  310.     SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);
  311. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement