Стек и очередь. - 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. Процессор сначала обрабатывает задачи из очереди задач с высшим приоритетом, затем из очереди задач с низшим приоритетом. Если процессор выполняет задачу с низшим приоритетом и приходит запрос на выполнение задачи с высшим приоритетом, то выполняемая задача помещается в соответствующий процессору стек, а пришедшая задача - в процессор. Задача из стека возвращается в процессор, если все задачи большего приоритета обработаны. Как правильно написать, чтоб можно было сравнивать приоритет? Конкретно этот момент:
 
 if (prog.priority == 1) // что не так?? как надо сделать?
            {
               queue_1.Enqueue(prog[i]); 
            }
            else
            {
                queue_2.Enqueue(prog[i]);
            }
Вот ошибка: Ошибка 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
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); // Время паузы в мсек
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы