Advertisement
Guest User

Untitled

a guest
May 31st, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.18 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Fadeev
  5. {
  6.     public class Program
  7.     {
  8.         public static object[,] _processes; // Массив процессов
  9.  
  10.         public static void Main(string[] args)
  11.         {
  12.             _processes = new object[4, 3]
  13.             {{"Процесс 1", 1, 5}, {"Процесс 2", 4, 15}, {"Процесс 3", 2, 10}, {"Процесс 4", 3, 20}};
  14.  
  15.             Console.WriteLine("Массив процессов запущен.");
  16.             Console.WriteLine();
  17.             while (true)
  18.             {
  19.                 Console.WriteLine("1 - Сортировка процессов по убыванию");
  20.                 Console.WriteLine("2 - Сортировка процессов по возрастанию");
  21.                 Console.WriteLine("3 - Запуск процессов в очереди");
  22.                 Console.WriteLine();
  23.                 Console.WriteLine("Введите номер команды, или любой другой символ для выхода");
  24.                 Console.Write("номер команды: ");
  25.                 try
  26.                 {
  27.                     var _key = Convert.ToInt32(Console.ReadLine()); // Преобразование строки из консоли в цифры
  28.  
  29.                     switch (_key)
  30.                     {
  31.                         case 1:
  32.                             _sortup();
  33.                             break;
  34.                         case 2:
  35.                             _sortdown();
  36.                             break;
  37.                         case 3:
  38.                             _work();
  39.                             break;
  40.                     }
  41.                     Console.WriteLine("***КОНЕЦ***");
  42.                     Console.WriteLine();
  43.                 }
  44.                 catch (Exception)
  45.                 {
  46.                     Console.WriteLine("Завершение работы.");
  47.                     Console.ReadKey();
  48.                 }
  49.             }
  50.         }
  51.  
  52.         // Вывод массива на экран сделан отлельной функцией для удобства
  53.         public static void _printarray()
  54.         {
  55.             // foreach - цикл для каждого элмента массива _process
  56.             // а каждый элемента каждый элемент присваеивается переменной _singleprocess
  57.             foreach (var _singleprocess in _processes)
  58.             {
  59.                 Console.WriteLine(_singleprocess); // Вывод в консоль в каждую строку
  60.             }
  61.         }
  62.  
  63.         // Сортировка по возрастанию
  64.         public static void _sortdown()
  65.         {
  66.             var tmp = new object[4, 3]; // Временный массив для сортирвки
  67.  
  68.             // Любая сортировка производится в 2 цикла.
  69.             for (var i = 0; i < 3; i++)
  70.             {
  71.                 for (var j = 0; j < 3 - i; j++)
  72.                 {
  73.                     // Если приоритет текущей строки больше приоритета на следующей строки
  74.                     if ((int) _processes[j, 1] > (int) _processes[j + 1, 1])
  75.                     {
  76.                         for (var k = 0; k < 3; k++)
  77.                         {
  78.                             // Заполняем временный массив текущей строкой
  79.                             // Текущему элементу назначаем значения следующего
  80.                             // А следующему значение из временного массива
  81.                             tmp[j, k] = _processes[j, k];
  82.                             _processes[j, k] = _processes[j + 1, k];
  83.                             _processes[j + 1, k] = tmp[j, k];
  84.                         }
  85.                     }
  86.                 }
  87.             }
  88.  
  89.             _printarray(); // Вывод массива на экран
  90.         }
  91.  
  92.         // Сортировка по убыванию
  93.         public static void _sortup()
  94.         {
  95.             var tmp = new object[4, 3]; // Временный массив для сортирвки
  96.  
  97.             // Любая сортировка производится в 2 цикла.
  98.             for (var i = 0; i < 3; i++)
  99.             {
  100.                 for (var j = 0; j < 3 - i; j++)
  101.                 {
  102.                     // Если приоритет текущей строки меньше приоритета на следующей строки
  103.                     if ((int) _processes[j, 1] < (int) _processes[j + 1, 1])
  104.                     {
  105.                         for (var k = 0; k < 3; k++)
  106.                         {
  107.                             // Заполняем временный массив текущей строкой
  108.                             // Текущему элементу назначаем значения следующего
  109.                             // А следующему значение из временного массива
  110.                             tmp[j, k] = _processes[j, k];
  111.                             _processes[j, k] = _processes[j + 1, k];
  112.                             _processes[j + 1, k] = tmp[j, k];
  113.                         }
  114.                     }
  115.                 }
  116.             }
  117.             _printarray(); // Вывод массива на экран
  118.         }
  119.  
  120.         public static void _work()
  121.         {
  122.             Console.WriteLine("Запуск всех процессов");
  123.  
  124.             for (var i = 0; i < 4; i++)
  125.             {
  126.                 Console.WriteLine(_processes[i, 0] + " Приоритет: " + _processes[i, 1] + " Время работы: " +
  127.                                   _processes[i, 2]);
  128.                 var timer = (int) _processes[i, 2];
  129.                 while (timer > 0)
  130.                 {
  131.                     Thread.Sleep(1000);
  132.                     timer -= 1;
  133.                     Console.WriteLine("Осталось " + timer + " из " + _processes[i, 2]);
  134.                 }
  135.             }
  136.         }
  137.     }
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement