Стек и очередь. - C#
Формулировка задачи:
Нахожусь в процессе написании программы. И из головы совсем вылетело как правильно написать.
Вот задание если надо:
Система состоит из двух процессоров P1 и P2, двух стеков S1 и S2 и четырёх очередей F1, F2, F3, F4. В систему могут поступать запросы на выполнение задач двух приоритетов - высший (1) и низший (2). Задачи сначала обрабатываются последовательно процессором P1, затем P2.
Запросы на выполнение задач высшего приоритета, поступающие из генератора задач, ставятся в очередь F1, а поступающие с процессора P1 - в очередь F3. Запросы на выполнение задач низшего приоритета, поступающие с генератора задач, ставятся в очередь F2, а поступающие с процессора P1 - в очередь F4. Процессор P1 обрабатывает запросы из очередей F1 и F2, а процессор P2 - из очередей F3 и F4. Процессор сначала обрабатывает задачи из очереди задач с высшим приоритетом, затем из очереди задач с низшим приоритетом. Если процессор выполняет задачу с низшим приоритетом и приходит запрос на выполнение задачи с высшим приоритетом, то выполняемая задача помещается в соответствующий процессору стек, а пришедшая задача - в процессор. Задача из стека возвращается в процессор, если все задачи большего приоритета обработаны.
Как правильно написать, чтоб можно было сравнивать приоритет? Конкретно этот момент:
Вот ошибка: Ошибка 1 "System.Collections.Generic.List<programm>" не содержит определения для "priority" и не был найден метод расширения "priority", принимающий тип "System.Collections.Generic.List<programm>" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\levis\documents\visual studio 2010\Projects\SAOD_3\SAOD_3\CodeFile1.cs 50 22 SAOD_3
Так же вопрос, как реализовать выполнение программы по тактам?
Листинг программы
- if (prog.priority == 1) // что не так?? как надо сделать?
- {
- queue_1.Enqueue(prog[i]);
- }
- else
- {
- queue_2.Enqueue(prog[i]);
- }
Листинг программы
- using System;
- using System.Collections;
- using System.Collections.Generic;
- struct programm
- {
- private string name;
- private int priority;
- private int time;
- public programm(string n, int p, int t)
- {
- name = n;
- priority = p;
- time = t;
- }
- }
- class process
- {
- static public void list_prmm(out List<programm> prog, out int num)
- {
- prog = new List<programm>();
- string n1;
- int p1, t1;
- Console.WriteLine("Введите количество задач: ");
- num = Int32.Parse(Console.ReadLine());
- Console.WriteLine("Введите хорактеристики задач");
- for (int i = 0; i < num; i++)
- {
- Console.WriteLine("Введите имя задачи " + (i+1) + ":");
- n1 = Console.ReadLine();
- Console.WriteLine("Введите время выполнения задачи " + (i + 1) + ":");
- t1 = Int32.Parse(Console.ReadLine());
- Console.WriteLine("Введите приоритет задачи (высший (1) или низший (2))" + (i + 1) + ":");
- p1 = Int32.Parse(Console.ReadLine());
- programm prog_temp = new programm(n1,p1,t1);
- prog.Add(prog_temp);
- Console.Clear();
- }
- }
- static public void Queue(List<programm> prog,int num)
- {
- Queue queue_1 = new Queue();
- Queue queue_2 = new Queue();
- for (int i = 0; i < num; i++)
- {
- if (prog.priority == 1) // что не так?? как надо сделать?
- {
- queue_1.Enqueue(prog[i]);
- }
- else
- {
- queue_2.Enqueue(prog[i]);
- }
- }
- }
- static void Main()
- {
- int num;
- List<programm> prog;
- list_prmm(out prog, out num);
- }
- }
up!!!
Решение задачи: «Стек и очередь.»
textual
Листинг программы
- while(prog.Count>0)
- {
- /// код для распределения процессов в стек или на процессоры
- System.Threading.Thread.Sleep(1000); // Время паузы в мсек
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д