![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Черный Менестрель |
![]() ![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Товарищи, очень нужна ваша помощь!
Необходимо реализовать очередь 2мя способами: на базе массива и на базе динамических структур данных (да-да, массив не труЪ, однако что поделать, такое задание выдали=( ). В каждом случае необходимо реализовать следующие операции: 1. Включить элемент в очередь 2. Исключить элемент из очереди 3. Найти в очереди элемент с заданным значением 4. Соединить 2 очереди в одну 5. Отсортировать очередь Сказать по правде я в линейных списках нихрена не понимаю, поэтому если кто возьмется помочь, пожалуйста, комментарии в коде оставьте, если не трудно ЗЫ: в теме "Все о динамических структурах данных" был, модуль качал. Заранее спасибо всем, кто откликнется! -------------------- Когда сойдешь с ума в последний раз в апреле,
И когда выпадет карта, Когда выпадет жребий, И первый из нас уйдет по тоннелю Good bye |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
(да-да, массив не труЪ, Я долго старался понять, но так и не врубился - что тут зашифровано?.. ![]() Если честно, мне совсем не нравится задание. Отсортировать очередь?.. на фига?? Это классно: отстоял полчаса, подходишь к прилавку, бдруг - бац! приходит кто-то умный и сортирует всех по росту - и я снова в конце? "Зачем?" - спрашиваю. "Because I can!" - отвечает.. То же самое по поводу многих остальных пунктов (типа поиска). В реализации очереди должны быть ДВЕ операции: положить и вынуть. Все. Ну, дополнительно можно приделать запрос длины и еще что-то сервисное. Но для обработки информации (коей является сортировка и выборка) очередь НЕ ДОЛЖНА использоваться. Ботинок не следует использовать как миску для супа, хотя принципиально это и возможно. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Черный Менестрель |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я долго старался понять, но так и не врубился - что тут зашифровано?.. ![]() Ну что за очередь в массиве? Для добавления/удаления элемента надо или постоянно держать массив максимальной длины в памяти (уже плохо), либо создавать новый, туда все переписывать, удалять старый. Ерунда какая-то Цитата сли честно, мне совсем не нравится задание. Отсортировать очередь?.. на фига?? Это классно: отстоял полчаса, подходишь к прилавку, бдруг - бац! приходит кто-то умный и сортирует всех по росту - и я снова в конце? "Зачем?" - спрашиваю. "Because I can!" - отвечает.. А насчет задания - вот такая вот бредовая лаба у нас. Причем без какой-либо дополнительной инфы. Листок в зубы и делайте как хотите =( -------------------- Когда сойдешь с ума в последний раз в апреле,
И когда выпадет карта, Когда выпадет жребий, И первый из нас уйдет по тоннелю Good bye |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Листок в зубы и делайте как хотите =( Ну, так делай... Ты ж говорил, что Цитата в теме "Все о динамических структурах данных" был, модуль качал. ? Неужели не заметил там же мой пост о сортировке очереди, реализованной динамическим списком? Так одна часть задания у тебя уже должна быть готова полностью: та, что с дин. списком. А там уже (по аналогии) и с массивами доделать - раз плюнуть. Ты хоть начни что-то делать, покажи, что пытаешься, а то смахивает на "сделайте мне задание, а я пойду, сдам и еще семестр делать ничего не буду"... |
andriano |
![]()
Сообщение
#5
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Ну что за очередь в массиве? Для добавления/удаления элемента надо или постоянно держать массив максимальной длины в памяти (уже плохо), либо создавать новый, туда все переписывать, удалять старый. Ерунда какая-то Стандартный метод организации очереди - кольцевой буфер. Имеет целый ряд достоинств: бысто, не нужно каждый раз дергать менеджер памяти, прозрачно, просто... Есть одно принципиальное ограничение - фиксированная иаксимальная длина. Но это именно ограничение, а не недостаток, т.к. в большинстве практических случаев такое ораничение нужно вводить искусственно, если его нет. Например, в DOS длина очереди в буфере клавиатуры равнялась 16 введенным символам. И этого вполне хватало. Более того, это было полезно: исчерпание буфера могло происходить только в случае, если прикладная программа вовремя не опустошала буфер, а это обычно происходило лишь в случае каких-либо проблем. В этом случае вполне естественным было как можно раньше информировать пользователя об имеющихся проблемах, а не давать ему возможности вводить килобайты текста, если все равно этот текст в дальнейшем будет потерян. Кстати, на баже массивов вполне успешно и рационально формируются даже такие принципиально динамические структуры как списки. Так что массив - вещь универсальная. |
Черный Менестрель |
![]()
Сообщение
#6
|
![]() Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Ты хоть начни что-то делать, покажи, что пытаешься, а то смахивает на "сделайте мне задание, а я пойду, сдам и еще семестр делать ничего не буду"... Так я начал =) Перерыл кучу инфы, нашел еще модуль для очереди, в приложении он, однако сортировки там нет. Цитата Неужели не заметил там же мой пост о сортировке очереди, реализованной динамическим списком? Вот за это прошу прощения, действительно просмотрел, сегодня утром когда пересматривал сохраненную информацию обнаружил этот пост. С массивами я поковыряюсь, благо в них более-менее понимаю, однако с динамическими еще остались загвоздки. Вообще, если честно, я ни черта не понимаю в этих указателях и тд, потому хотелось бы спросить, во-первых по сортировке. В целом я понимаю, что происходит, но некоторые действия мне неясны, в частности Код empty := not assigned(head) . . . . .. . . . . while assigned(p) do Для чего в этих строках служит assigned? Вернусь к найденному мной модулю (в приложении), очередь там, как и в вашем примере сортировки, как объект рассматривается. Правда я не понимаю смысла некоторых операций, в частности function Begining : E; function IsNotEmpty : boolean; (для чего ее добавили, если рядом function IsEmpty : boolean; ?) function OutBegining : E; Procedure DelBegining; Эти функция и процедура судя по результатам одно и то же выполняют, или я не прав. ЗЫ: а про объединение очередей вообще никакой информации найти не удалось (( Прикрепленные файлы ![]() -------------------- Когда сойдешь с ума в последний раз в апреле,
И когда выпадет карта, Когда выпадет жребий, И первый из нас уйдет по тоннелю Good bye |
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
некоторые действия мне неясны, в частности Проверка, была ли выделена память под переменные head и p соответственно.empty := not assigned(head)Для чего в этих строках служит assigned? function Begining : E; Либо автор не знаком с операцией NOT, либо крепко ее невзлюбил..function IsNotEmpty : boolean; (для чего ее добавили, если рядом function IsEmpty : boolean; ?) function OutBegining : E; Подобное в некоторых случаях оправдано. Особенно, если нельзя вызвать функцию как процедуру (без присваивания). Но в целом, согласен, лишнее. Вообще, я бы не стал рекомендовать этот найденный тобой модуль в качестве примера для подражания..Procedure DelBegining; Эти функция и процедура судя по результатам одно и то же выполняют, или я не прав. ЗЫ: а про объединение очередей вообще никакой информации найти не удалось (( А голова на что? Ты правда надеешься всегда все "находить"?..Пожалуйста, используй тэг code=pas для паскалевских программ -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 12:14 |