Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Fadeev
- {
- public class Program
- {
- public static object[,] _processes; // Массив процессов
- public static void Main(string[] args)
- {
- _processes = new object[4, 3]
- {{"Процесс 1", 1, 5}, {"Процесс 2", 4, 15}, {"Процесс 3", 2, 10}, {"Процесс 4", 3, 20}};
- Console.WriteLine("Массив процессов запущен.");
- Console.WriteLine();
- while (true)
- {
- Console.WriteLine("1 - Сортировка процессов по убыванию");
- Console.WriteLine("2 - Сортировка процессов по возрастанию");
- Console.WriteLine("3 - Запуск процессов в очереди");
- Console.WriteLine();
- Console.WriteLine("Введите номер команды, или любой другой символ для выхода");
- Console.Write("номер команды: ");
- try
- {
- var _key = Convert.ToInt32(Console.ReadLine()); // Преобразование строки из консоли в цифры
- switch (_key)
- {
- case 1:
- _sortup();
- break;
- case 2:
- _sortdown();
- break;
- case 3:
- _work();
- break;
- }
- Console.WriteLine("***КОНЕЦ***");
- Console.WriteLine();
- }
- catch (Exception)
- {
- Console.WriteLine("Завершение работы.");
- Console.ReadKey();
- }
- }
- }
- // Вывод массива на экран сделан отлельной функцией для удобства
- public static void _printarray()
- {
- // foreach - цикл для каждого элмента массива _process
- // а каждый элемента каждый элемент присваеивается переменной _singleprocess
- foreach (var _singleprocess in _processes)
- {
- Console.WriteLine(_singleprocess); // Вывод в консоль в каждую строку
- }
- }
- // Сортировка по возрастанию
- public static void _sortdown()
- {
- var tmp = new object[4, 3]; // Временный массив для сортирвки
- // Любая сортировка производится в 2 цикла.
- for (var i = 0; i < 3; i++)
- {
- for (var j = 0; j < 3 - i; j++)
- {
- // Если приоритет текущей строки больше приоритета на следующей строки
- if ((int) _processes[j, 1] > (int) _processes[j + 1, 1])
- {
- for (var k = 0; k < 3; k++)
- {
- // Заполняем временный массив текущей строкой
- // Текущему элементу назначаем значения следующего
- // А следующему значение из временного массива
- tmp[j, k] = _processes[j, k];
- _processes[j, k] = _processes[j + 1, k];
- _processes[j + 1, k] = tmp[j, k];
- }
- }
- }
- }
- _printarray(); // Вывод массива на экран
- }
- // Сортировка по убыванию
- public static void _sortup()
- {
- var tmp = new object[4, 3]; // Временный массив для сортирвки
- // Любая сортировка производится в 2 цикла.
- for (var i = 0; i < 3; i++)
- {
- for (var j = 0; j < 3 - i; j++)
- {
- // Если приоритет текущей строки меньше приоритета на следующей строки
- if ((int) _processes[j, 1] < (int) _processes[j + 1, 1])
- {
- for (var k = 0; k < 3; k++)
- {
- // Заполняем временный массив текущей строкой
- // Текущему элементу назначаем значения следующего
- // А следующему значение из временного массива
- tmp[j, k] = _processes[j, k];
- _processes[j, k] = _processes[j + 1, k];
- _processes[j + 1, k] = tmp[j, k];
- }
- }
- }
- }
- _printarray(); // Вывод массива на экран
- }
- public static void _work()
- {
- Console.WriteLine("Запуск всех процессов");
- for (var i = 0; i < 4; i++)
- {
- Console.WriteLine(_processes[i, 0] + " Приоритет: " + _processes[i, 1] + " Время работы: " +
- _processes[i, 2]);
- var timer = (int) _processes[i, 2];
- while (timer > 0)
- {
- Thread.Sleep(1000);
- timer -= 1;
- Console.WriteLine("Осталось " + timer + " из " + _processes[i, 2]);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement