Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 102
1

Построение приоритетных очередей и обработка данных на их основе (нужны комментарии)

15.06.2019, 20:49. Показов 2943. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно максимально подробно прокомментировать код.
Тема: Построение приоритетных очередей и обработка данных на их основе
Задание: Необходимо реализовать очередь на базе списков, применяя комбинированный алгоритм для ее обслуживания. Затем продемонстрировать выполнение основных операций с элементами очереди: поиск, добавление, удаление.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace SiAOD_LR3
{
    class Program
    {
        static void Main(string[] args)
        {
            string command = "";
            string name = "";
            int priority = 0, result = 0;
            MyList list = new MyList();
            Console.WriteLine("1. add - добавление");
            Console.WriteLine("2. delete - удаление приоритетного");
            Console.WriteLine("3. search - поиск по имени");
            Console.WriteLine("4. cout- вывод");
            Console.WriteLine("exit - выход");
            while (true)
            {
                Console.Write("Введите команду:");
                command = Console.ReadLine();
                switch (command)
                {
                    case "2":
                        list.DeleteEnd();
                        Console.WriteLine("Команда удаления выполнена успешно.");
                        break;
                    case "1":
                        Console.Write("name:");
                        name = Console.ReadLine();
                        Console.Write("priority:");
                        priority = Convert.ToInt32(Console.ReadLine());
                        list.Add(name, priority);
                        break;
                    case "4":
                        Console.Write("spisok:" + list.GetElements());
                       
                        
                        break;
                    case "3":
                        Console.Write("name:");
                        name = Console.ReadLine();
                        result = list.GetPriority(name);
                        string execute = result == -1 ? "Ничего не найдено." : "Найден элемент: " + name;
                        Console.WriteLine(execute);
                        break;
                    case "exit":
                        return;
                    default:
                        Console.WriteLine("не верная команда.");
                        break;
                }
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2019, 20:49
Ответы с готовыми решениями:

Построение приоритетных очередей и обработка данных на их основе
Доброго времени суток! Необходимо реализовать очередь на базе списков, применяя комбинированный...

Построение графика и комментарии по коду нужны
Прокоментируйте код вкратце procedure TForm1.FormCreate(Sender: TObject); begin ...

Обработка текста, нужны комментарии к программе
Помогите пожалуйста разобрать каждую строку программы:wall: И еще конкретно интересует что значит...

Построение графика на основе данных из БД
возможно, эту тему лучше было бы создать в ASP.NET. суть моего вопроса такова: есть БД. из нее я...

4
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
16.06.2019, 01:36 2
Что комментировать то? У вас где реализация MyList? Вы запускали эту программу?
0
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 102
16.06.2019, 04:20  [ТС] 3
QuakerRUS, вот
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace SiAOD_LR3
{
    public class MyList
    {
        public Item List { get; set; }
 
        public MyList()
        {
            List = new Item();
 
        }
 
        //добавление нового элемента по его приоритету
        //если приоритет одинаковый то первым в списке
        //октажется тот кто раньше пришёл
        public void Add(string name, int priority)
        {
            ReverseBegin();
            bool maxPriority = true;
            while (!IsEnd())
            {
                List = List.Next;
                if (priority < List.Priority)
                {
                    Item local = new Item()
                    {
                        Name = name,
                        Priority = priority,
                        Next = List,
                        Back = List.Back
                    };
                    List.Back.Next = local;
                    List.Back = local;
                    List = local;
                    maxPriority = false;
 
                    break;
                }
 
                if (priority == List.Priority)
                {
                    List = List.Next;
                    Item local = new Item()
                    {
                        Name = name,
                        Priority = priority,
                        Next = List,
                        Back = List.Back
                    };
                    List.Back.Next = local;
                    List.Back = local;
                    List = local;
                    maxPriority = false;
 
                    break;
                }
            }
            //проверка если список пуст
            //или если приоритет самый большой
            if (IsEmpty() || maxPriority)
            {
                AddEnd(name, priority);
            }
        }
 
        public void AddEnd(string name, int priority)
        {
            ReverseEnd();
            Item local = new Item()
            {
                Name = name,
                Priority = priority,
                Back = List
            };
            List.Next = local;
            List = List.Next;
        }
 
        public int GetPriority(string name)
        {
            ReverseBegin();
            while (!IsEnd())
            {
                List = List.Next;
                if (List.Name == name)
                {
                    return List.Priority;
                }
            }
            return -1;
        }
 
        public string GetElements()
        {
            string output = "";
            ReverseBegin();
            while (!IsEnd())
            {
                List = List.Next;
                output += "\n" + List.Name + " " + List.Priority + "\n"; 
            }
            return output;
        }
 
        //удаление последнего
        public void DeleteEnd()
        {
            ReverseBegin();
            if (!IsEmpty())
            {
                List = List.Next;
                List.Back = null;
            }
        }
 
        //функция для перехода к началу списка
        public void ReverseBegin()
        {
            while (List.Back != null)
            {
                List = List.Back;
            }
            if (List.Back != null && List.Next != null)
                List = List.Next;
        }
 
        //функция для перехода к концу списка
        public void ReverseEnd()
        {
            while (List.Next != null)
            {
                List = List.Next;
            }
        }
 
        //являемся ли мы в начале списка
        public bool IsBegin()
        {
            return List.Back == null && List.Next != null;
        }
 
       
 
        //являемся ли мы в конце списка
        public bool IsEnd()
        {
            return List.Next == null;
        }
 
        public bool IsEnda()
        {
            return List.Back == null;
        }
 
 
        //проверяем пустой ли список
        public bool IsEmpty()
        {
            return List.Next == null && List.Back == null && List.Priority == 0 && List.Name == null;
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
namespace SiAOD_LR3
{
    public class Item
    {
        public string Name { get; set; }
        public int Priority { get; set; }
        public Item Next { get; set; }
        public Item Back { get; set; }
    }
}
0
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
16.06.2019, 18:39 4
В каком месте непонятна работа программы то?

Добавлено через 5 часов 55 минут
Цитата Сообщение от Программер010
По поводу данной темы Построение приоритетных очередей и обработка данных на их основе (нужны комментарии) нужно как можно более подробно описать прогу, как минимум каждый цикл, функцию, класс и тд. Как максимум каждую строку кода.
Ну так опишите, в чем проблема? Если какие то моменты непонятны, спрашивайте. Если ничего не понятно, то советую почитать какую-нибудь литературу по C#.
0
601 / 438 / 136
Регистрация: 22.11.2017
Сообщений: 1,379
17.06.2019, 17:17 5
Программер010, привет!
Я на C# не пишу. Я специализируюсь на C++. Меня просто товарищ позвал.

Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
//Пространство имён пользователя
namespace SiAOD_LR3
{
//Класс по умолчанию
    class Program
    {
//Статический метод по умолчанию
        static void Main(string[] args)
        {
//Объявляем пустые строки
            string command = "";
            string name = "";
//Объявляем две целочисленных переменных и инициализируем их нулями
            int priority = 0, result = 0;
//Динамическое объявление объекта list класса MyList
            MyList list = new MyList();
//Выводим на консоль приглашение пользователя
            Console.WriteLine("1. add - добавление");
            Console.WriteLine("2. delete - удаление приоритетного");
            Console.WriteLine("3. search - поиск по имени");
            Console.WriteLine("4. cout- вывод");
            Console.WriteLine("exit - выход");
//Объявляем бесконечный цикл
            while (true)
            {
//Приглашение пользователя
                Console.Write("Введите команду:");
//Считывание с консоли строки от пользователя и помещения её в переменную или объект command
                command = Console.ReadLine();
//Вызов оператора множественного выбора посредством сравнения
                switch (command)
                {
//Если значением command является "2", то выполняется этот кейс
                    case "2":
//Вызов нестатического метода DeleteEnd() от имени экземпляра list
                        list.DeleteEnd();
//Вывод на экран текста "Команда удаления выполнена успешно."
                        Console.WriteLine("Команда удаления выполнена успешно.");
//Завершить выполнение switch
                        break;
//Если значением command является "1", то выполняется этот кейс
                    case "1":
//Вывод на консоль слова "name:" без переноса строки
                        Console.Write("name:");
//Присваиваем введённую пользователем в консоле строку объекту name
                        name = Console.ReadLine();
//Вывод на консоль слова "priority:" без переноса строки
                        Console.Write("priority:");
//Присваиваем введённую пользователем в консоле строку объекту priority, предварительно превратив эту строку в тип Int32
                        priority = Convert.ToInt32(Console.ReadLine());
//Вызов нестатического метода Add() с аргументами name, priority от имени экземпляра list
                        list.Add(name, priority);
//Завершить выполнение switch
                        break;
//Если значением command является "4", то выполняется этот кейс
                    case "4":
                        Console.Write("spisok:" + list.GetElements());
//Завершить выполнение switch
                        break;
//Если значением command является "3", то выполняется этот кейс
                    case "3":
//Вывод на консоль слова "name:" без переноса строки
                        Console.Write("name:");
//Присваиваем введённую пользователем в консоле строку объекту name
                        name = Console.ReadLine();
//Вызов нестатического метода GetPriority() с аргументом name и присвоение возвращённого им значения объекту result
                        result = list.GetPriority(name);
//Объявление и инициализация экземпляра execute класса string значением
//"Ничего не найдено." если условие result == -1 истинно
//"Найден элемент: " + name если условие result == -1 ложно
//Конструкция условие ? истина : лож называется тернарным оператором полного ветвления
                        string execute = result == -1 ? "Ничего не найдено." : "Найден элемент: " + name;
//Вывод на экран значения объекта execute
                        Console.WriteLine(execute);
//Завершить выполнение switch
                        break;
//Если значением command является "exit", то выполняется этот кейс
                    case "exit":
                        return;
//Если значением command является строка, которая не предусмотрена кейсами выше
                    default:
                        Console.WriteLine("не верная команда.");
//Завершить выполнение switch
                        break;
                }
            }
        }
    }
}
0
17.06.2019, 17:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2019, 17:17
Помогаю со студенческими работами здесь

Построение графиков на основе данных из Qtableview
Привет всем! В моей программе есть Qtableview, которая показывает результаты sql запросов. Там...

Построение графиков на основе данных из Lotus
Всем доброго времени суток! Мне поставили задачу визуализировать данные из Лотуса в виде графика....

Построение графика на основе введенных данных
Имеется программа, на основе введенных данных, строится график, но в результате вместо графика в...

Построение прогноза на основе статистических данных
Здравствуйте. У меня возникла проблема при решении производственной задачи. Большой ресторан...

TreeView: построение дерева на основе данных из БД Access
Такова проблема. Есть 3 таблицы в БД. 1-компания, 2 - отдел, 3-пользователь в 1-компания столбцы ...

Построение сводной таблицы на основе данных из 2-х листов
Добрый день! Нарисовалась задачка: необходимо построить сводную таблицу по примерам. Помогите, кто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru