С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 08.11.2022
Сообщений: 4

Вывод списка после конца ввода

03.12.2022, 02:57. Показов 842. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Столкнулся с проблемой при решении задачи: Напишите программу, которая реализует "список телефонов". Вместо данных об отдельных людях в нем мы будем регистрировать только числа (положительные целые числа). Управление программой будет осуществляться с помощью стандартного ввода.

В строке ввода всегда будет код операции и номер, если применимо, который будет параметром операции. Операция будет заключаться в следующем:

1 - вставьте номер в список
2 - удалить номер из списка
4 - сортировка списка (в порядке убывания)
5 - выписать список
6 - конец
Для операций 1 и 2 будет следовать разделенный пробелом номер, который имеет значение вставить или очистить.

Так, например, строка "1 5" будет означать "добавить в список номер 5". Строка "2 4" означает "удалить из списка номер 4".

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

Не могу понять, как сделать функцию 5(вывод) так, чтобы весь список вывелся после конца всего ввода(после введения 6). Функцию 5 можно вызвать несколько раз и я не могу понять, как сделать вывод в правильной последовательности после конца ввода. Надеюсь, код прикрепил правильно. Думаю, сам класс не так важен, в нем, думаю, все правильно. Проблемы вызывает ввод. Он немного недоделан ибо не знаю, как это реализовать.


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
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
import sys
class Linked_list:
    head = None
    class Node:
        element = None 
        next_node = None
        def __init__(self, element, next_node = None):
            self.element = element
            self.next_node = next_node
    def insert(self, element):
        if element == None:
            return None
        if not self.head:
            self.head = self.Node(element)
            self.end = self.head
            return element
        node = self.Node(element)
        self.end.next_node = node
        self.end = node
    def delit(self, element):
        node = self.head
        if self.head == None:
            return None
        if element == None:
            return None
        if node.element == element and node.next_node != None:
            self.head = self.head.next_node
            node = self.head
            return element
        elif self.head.element == element and self.head.next_node == None:
            del self.head
            del node
            return None
        while node.next_node != None and node.element != element:
            prev_node = node
            node = node.next_node
        if node.element == element:
            prev_node.next_node = node.next_node
            hod = node.element
            del node
            return hod
        elif node.next_node == None:
            return None
    def sort(self):
        k = 1
        node = self.head
        if self.head == None:
            return None
        if node.next_node == None:
            return None
        while node.next_node != None:
            node = node.next_node
            k += 1
        i = 0
        node = self.head
        if k == 2:
            if node.next_node.element > node.element:
                pom = node.next_node
                node.next_node = None
                pom.next_node = node
                self.head = pom
                return None
        while i < k -1:
            j = 0
            node = self.head
            while j < k - 1 - i:
                prev_node = node
                node = node.next_node
                nextnode = node.next_node
                if node.next_node != None and (node.element > prev_node.element or nextnode.element > node.element):
                    if prev_node == self.head and node.element > prev_node.element:
                        prev_node.next_node = node.next_node
                        node.next_node = prev_node
                        self.head = node
                    else:
                        node.next_node = nextnode.next_node
                        nextnode.next_node = node
                        prev_node.next_node = nextnode
                        node  = nextnode
                j += 1
            i += 1
    def out(self):
        if self.head == None:
            return None
        node = self.head
        while node.next_node:
            print(node.element)
            node = node.next_node
        print(node.element)
 
def read():
    data = sys.stdin.read(1)
    x = 0
    if int(data) == 1:
        data = sys.stdin.read(1)
        while data == ' ':
            data = sys.stdin.read(1)
        while (ord(data) >= 48 and ord(data) <= 57):
            x = (x*10) + int(data) 
            data = sys.stdin.read(1)
        linked_list.insert(x)
    if int(data) == 2:
        data = sys.stdin.read(1)
        while data == ' ':
            data = sys.stdin.read(1)
        while (ord(data) >= 48 and ord(data) <= 57):
            x = (x*10) + int(data) 
            data = sys.stdin.read(1)
        linked_list.delite(x)
    if int(data) == 4:
        linked_list.sort()
    if int(data) == 6:
        data = '\n'
        return data
 
 
linked_list = Linked_list()
 
cislo = read()
 
while cislo != '\n':
    cislo = read()
    if cislo == '\n':
        linked_list.out()
    else:
        linked_list.insert(cislo)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.12.2022, 02:57
Ответы с готовыми решениями:

Неправильный вывод двусвязанного списка с конца
Возникла проблема. Двусвязанный список при вызове функции print_list_rev внутри функции quest выводится правильно, без потери узлов. Но...

Удаление конца списка после заданного элемента
Помогите мне пожалуйста. Следующий код удаляет конец списка с заданным элементом, как можно удалить конец списка после заданного...

Вывод окна ввода снова после не правильно ввода
Доброй ночи :) Программу почти доделал, осталась мелочь с которой и уже бьюсь не один час, решил обратится к Вам, сам я новичок в этой...

2
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,294
03.12.2022, 11:35
Цитата Сообщение от Ugliest Посмотреть сообщение
сделать функцию 5(вывод) так, чтобы весь список вывелся после конца всего ввода(после введения 6)
при вводе 6 у вас вообще должна завершится программа. только при вводе 5 должен быть вывод списка.
Python
1
2
3
4
5
6
7
8
while True:
    action, data = input().split():
    if action
        print('ваш список'
    elif action == '1':
       # выполняем что то
    elif action == '6':
         break
1
0 / 0 / 0
Регистрация: 08.11.2022
Сообщений: 4
03.12.2022, 13:07  [ТС]
Реализовал данный вывод, работает, но сайт сдачи задания говорит, что неправильно. Скорее всего вывод должен выглядеть так. Пример: 1 100 1 200 1 300(вводим числа) 5(программа должна вывести 100 200 300 именно после того, как придет 6) 4(сортируем) 5(опять выводим уже сортированный) 6(и вот уже после того, как придет 6, программа должна вывести сначала неотсортированный, а затем отсортированный список)ю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2022, 13:07
Помогаю со студенческими работами здесь

Необходимо удалить заданное число элементов из конца списка. Добавить элемент после элемента с заданным ключом
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; struct list { list* last; list* next; char...

Числа считываются из стандартного устройства ввода. Признаком конца ввода является число 9999
Помогите доработать код. Задание: Упростите файл целых чисел f. Числа считываются из стандартного устройства ввода. Признаком конца ввода...

Вывод после полного ввода
Доброе утро, уважаемые программисты, столкнулся с такой проблемой, что при данном вводе: входные данные 4 word localization ...

После ввода cin бесконечный вывод на экран
void add_car() { int choice; cout&lt;&lt;&quot;\n\n\n\n\nHow many cars you want to add?\n\n&quot;; cin&gt;&gt;choice; for (int i = 0; i...

Вывод текста после ввода определенной команды
Как вывести введенный текст, но только после ввода, например, end? На данном этапе, используя функцию cin.getline() с разделителем ';',...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru