1 / 1 / 0
Регистрация: 22.09.2022
Сообщений: 1
1

Стек или Менеджер задач

22.09.2022, 16:24. Показов 8455. Ответов 1

Author24 — интернет-сервис помощи студентам
Всем привет! Прошу помощи Имеется такая задача:

Напишите класс, который реализует стек и его возможности (достаточно будет добавления и удаления элемента).
После этого напишите ещё один класс — «Менеджер задач». В менеджере задач можно выполнить команду «Новая задача», в которую передаётся сама задача (str) и её приоритет (int). Сам менеджер работает на основе стека (не наследование!). При выводе менеджера в консоль все задачи должны быть отсортированы по приоритету: чем меньше число, тем выше задача.

Вот пример основной программы:
Python
1
2
3
4
5
6
7
manager = TaskManager()
manager.new _task("сделать уборку", 4)
manager.new_task("помыть посуду", 4)
manager.new _task("отдохнуть", 1)
manager.new _task("поесть", 2)
manager.new _task("сдать дз", 2)
print(manager)
Результат:
1 отдохнуть
2 поесть; сдать дз
4 сделать уборку; помыть посуду


Дополнительно: реализуйте также удаление задач и подумайте, что делать с дубликатами.
Необходимо выполнить со следующими моментами:
1) Модели реализованы в стиле ООП, основной функционал описан в методах классов и в отдельных функциях.
2) При написании классов соблюдаются основные принципы ООП: инкапсуляция, наследование и полиморфизм.
3) Для получения и установки значений у приватных атрибутов используются сеттеры и геттеры.
4) Для создания нового класса на основе уже существующего используется наследование.
5) Формат вывода соответствует примеру.

Я написала начало кода, а дальше в ступор вошла:
Python
1
2
3
4
5
6
7
8
9
10
class Stack:
    def __init__(self):
        self.stack = []
    def push(self, item):
        self.stack.append(item)
    def pop(self):
        if len(self.stack) == 0:
            return None
            removed = self.stack.pop()
            return removed
А дальше встряла...нужно в стеке ещё дописать если введено пустое значение и ранжирование по приоритету
Потом написать ещё класс для запросов, чтобы в нём была инициализация словаря
Потом чтобы этот класс работать с запросам, в рамках создания задачи и далее ее работу внутри этого списка

Помогите, пожалуйста, а то совсем худо( Больше всем спасибо!
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2022, 16:24
Ответы с готовыми решениями:

Как реализовать менеджер задач (можно ли через stringgrid или stringlist?)
Конечная цель которую хочу получить: менеджер задач. в окне формы1 пустой список задач которых...

Менеджер задач
Дано: Для описания задач пользователя использовать класс UserTask со свойствами: Название...

Менеджер задач
Делаю декстопный Менеджер задач. Задачи хранятся в динамическом массиве и далее записываются в...

Менеджер асинхронных задач
Здравствуйте. Что то не могу никак сформулировать правильно свои мысли чтобы задать вопрос гуглу....

1
5 / 5 / 0
Регистрация: 28.11.2022
Сообщений: 4
13.12.2022, 17:41 2
Python
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
class Stack:
    def __init__(self):
        self.__list = []
 
    def __str__(self):
        return str(", ".join(self.__list))
 
    def add(self, elem):
        self.__list.append(elem)
 
    def pop(self):
        if len(self.__list) == 0:
            return None
        return self.__list.pop()
 
 
class TaskManager:
    def __init__(self):
        self.task = {}
 
    def __str__(self):
        string = ""
        for elem in sorted(self.task.keys()):
            string += str(elem) + " " + str(self.task[elem]) + ";\n"
        return string
 
    def new_task(self, task, priority):
        if not priority in self.task.keys():
            self.task[priority] = Stack()
            self.task[priority].add(task)
        else:
            new_stack = Stack()
            while len(str(self.task[priority])) != 0:
                value = self.task[priority].pop()
                if value != task:
                    new_stack.add(value)
            new_stack.add(task)
            self.task[priority] = new_stack
 
    def delete_task(self, priority):
        if not priority in self.task.keys():
            print("Задача с таким приоритетом нет!")
        else:
            print(f"Удалили задачу {self.task[priority].pop()}")
            if len(str(self.task[priority])) == 0:
                self.task.pop(priority)
 
manager = TaskManager()
manager.new_task("сделать уборку", 4)
manager.new_task("помыть посуду", 4)
manager.new_task("отдохнуть", 1)
manager.new_task("поесть", 2)
manager.new_task("сдать дз", 2)
print(manager)
manager.new_task("сделать уборку", 4)
manager.delete_task(4)
manager.delete_task(1)
print(manager)
3
13.12.2022, 17:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2022, 17:41
Помогаю со студенческими работами здесь

Переменные в стеке. Где хранятся? Как обрабатываются? Есть ли программный стек или только стек процессора?
Есть у меня пробелы в познаниях, хотел бы их устранить. 1. Что такое стек в самом языке С++ ? 2....

Есть задача для Искусственного Разума сделать GUI Менеджер Задач на Qt3 Linux
Есть задача для Искусственного Разума сделать GUI Менеджер Задач на Qt3 Linux Вообще изначально...

Программирование задач с использованием классов. Определение класса «стек»
Определить класс «стек». В класс необходимо включить два конструктора: 1.создание стека (пустого);...

Для моделирования каких реальных задач удобно использовать стек?
Подскажите как по простому ответить на вопрос?

Используя очередь или стек описать процедуру или функцию обработки узлов дерева.
Используя очередь или стек (считать уже описанными их типы и операции над ними) описать процедуру...

Используя очередь или стек, описать процедуру или функцию, определяющую число вхождений элемента Е в дерево Т
Народ помогите пожалуйста! Проблема в том, что не понимаю суть задания. Прошу не код, а объяснения...

Используя очередь или стек, описать процедуру или функцию, которая: вычисляет среднее арифметическое всех элементов
Помогите пожалуйста решить задачу: Используя очередь или стек, описать процедуру или функцию,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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