![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
rs-mms |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: ![]() ![]() ![]() |
Код program ochered; uses crt; type PtrNode=^Node; Node=record; Info: Integer; Next: PetrNode; end; procedure prn_q(G: PtrNode); var t: PtrNode; begin t: G; while t<>Nil do begin write(t^.Info:5); t:=t^.Next; end; writeln; end; var Q,P: PtrNode; HQ,HP: PtrNode; Tek: PtrNode; n1, n2, i: Integer; begin clrscr; Q:=Nil; HQ:=Nil; repeat write('vvedite kol-vo elementov v ocheredi Q: '); readln(n1); until n1>0; i:=0; while i<n1 do begin New(Tek); Tek^.Info:=random(100); Tek^.Next:=Nil; if Q=Nil then begin Q:=Tek; HQ:=Tek; end else begin HQ^.Next:=Tek; HQ:=Tek; end; i:=i+1; end; writeln('sozdana ochered Q: '); prn_q(Q); P:=Nil; HP:=Nil; repeat write('vvedite kol-vo elementov v ocheredi P(ne menshe 4): '); readln(n2); until n2>=4; i:=0; while i<n2 do begin New(Tek); Tek^.Info:=random(100); Tek^.Next:=Nil; if P=Nil then begin P:=Tek; HP:=Tek; end else begin HP^.Next:=Tek; HP:=Tek; end; i:=i+1; end; writeln(sozdana ochered P: '); prn_q(P); for i:=1 to 3 do begin Tek:=P; HQ^.Next:=Tek; HQ:=Tek; P:=P^.Next; HQ^.Next:=Nil; end; writeln('ochered P posle udalenia is nee 3 elementov: '); prn_q(P); writeln('ochered Q posle dobavlenia v nee 3 elementov: '); prn_q(Q); readln; end. |
![]() ![]() |
Krjuger |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Слушай,если чесно оно у тебя вообще компилируется?
Код t: G; особенно после begin'a в процедуре печати очереди,меня лично как то настараживает.А еще посмотри по сути у тебя идет создание очереди Q и P практически идентичны,я думаю лучше создать одну процедуру.И напиши,что именно тебе не понятно,потому что каждую строчку коментировать врятли кто будет. |
rs-mms |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: ![]() ![]() ![]() |
Все работает! И препод видел, сказал, нормально, только мне нужно будет в пятницу объяснить как и что тут работает. Мне непонятно как работают указатели, программу писала по кусочкам, по образцам, поэтому и непонятно что и как.
Добавлено через 6 мин. пишу, что как понимаю, исправьте, если не права type PtrNode=^Node; Node=record; Info: Integer; Next: PetrNode; end; здесь Node это запись с двумя полями procedure prn_q(G: PtrNode); var t: PtrNode; begin t: G; while t<>Nil do begin write(t^.Info:5); t:=t^.Next; end; writeln; end; процедура наверное выводит очередь на экран, а вот как она это делает... дальше идет создание очереди одной, потом второй, вывод их на экран при помощи процедуры. а как именно происходит создание очереди? New - это новый элемент, с циклом тоже понятно, а вот что на что указывает - непонятно)) ну и последний кусок, который с цикла начинается, это наверное собственно добавление и удаление элементов, опять же как это происходит непонятно... |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
|
Krjuger |
![]()
Сообщение
#5
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Ну представь что у тебя есть такая полоска разбитая на несколько кусочков,в кадом кусочке у тебя что то запсано.ты береш читаеш из кусочка и переходиш к следующему.
Насчет того как ты очередь создаеш я не очень понимаю твой алфавит. volvo,ну не реагирай ты так язвительно,тебя бояться будут)))) Кстати она скинула лиш кусок кода, поэтому и не компилируетя,весь код в первом посте,так что тут ты немного не прав. З.Ы а забавная в твоем паскале подсветочка. Сообщение отредактировано: Krjuger - 26.05.2009 16:08 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Для слепых - я скопировал код из первого поста целиком... Дальше флеймить будешь? Я бы поостерегся на твоем месте... И, это, я как-нибудь сам разберусь, как мне реагировать, язвительно или еще как...
(сообщение на автоудалении, ссылаться на него не надо...) |
Krjuger |
![]()
Сообщение
#7
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Я бы на твоем месте сделал бы как нить так.
кстати потом,когда ты будеш добавлять в очередь Q элементы ты можеш воспользоваться процедурой OueuePush,кстати,если что Volvo поправит,но я не помню надо ли обьявлять "е" глобально. Volvo,извини,но посмотри на свой скрин,я лично по нему могу увидеть лиш ее третий пост,а что ниже скопировано,сори не вижу.Наверно я реально слепой...... Сообщение отредактировано: Krjuger - 26.05.2009 16:32 |
rs-mms |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: ![]() ![]() ![]() |
Скриншот посмотреть, на котором будет видно, что программа откомпилировалась, и при этом видно четвертую или 12-ю строки исходника, можно? Потому что: ![]() Как программа, не прошедшая компиляцию, может выполняться - это на форум писателей фантастов... Здесь - программисты. нуу...всего лишь не поставила второпях знак. конечно же он присутствует и все работает. Добавлено через 2 мин. так что видно,что программа сдается скорее на листочке,чем компьютере} программа сдается в виде файла pas Добавлено через 10 мин. Вы конечно очень добры и терпеливы, спасибо за новый код, но, препод уже видел первоначальный вариант и исправлять не буду - это будет подозрительно непохоже на работу первокурсника, будет видно что работали профессионалы! Мне еще нужно блок-схему к этой очереди, я конечно понимаю, что сначала составляется алгоритм, а потом уже пишется код, но у меня вот так не получается. А блок-схему не могу составить, пока не пойму "как это работает")) ну вот хотя бы про эти строчки(добавление и удаление элемента) - что на что указывает и в каком месте добавляется а в каком удаляется? for i:=1 to 3 do begin Tek:=P; HQ^.Next:=Tek; HQ:=Tek; P:=P^.Next; HQ^.Next:=Nil; end; |
Krjuger |
![]()
Сообщение
#9
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Ну как тебе сказать,я не профессионал и мне до него далеко,я такой же первокурсник,просто профиль прикладная математика и информатика
![]()
Насчет HQ я не совсем уверен,это имеется в виду HeadQ?тобиш начало очереди? |
amega |
![]()
Сообщение
#10
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Мне непонятно как работают указатели при выполнение(запуске программы) память распределятся так: на код, локальние переменые, "куча" (динамическая память) ![]() дак вот допустим ми обявили переменную А типа масив о 1 до 5 типа интежер , при компиляции в то место де локальние переменные занеслась А (5*4 байт). Все прекрасно мы работаем с этим масивом но вдруг к нам нужно 6 значений, каждый раз не побижим к програмисту чобы менял диапазон масива, для этого используется динамическая память. Указатель - это переменная которая содержит адрес ячейки памяти в динамической памяти. дак вот когда мы делаем New() мы просим менеджер кучи чтоб он нашол нам место в "кучи" для хранения, нашолши место она записывает адрес где хранится инф. ![]() для того чтоб добратся до информации хранящийся мы используем ^ Цитата - это будет подозрительно непохоже на работу первокурсника, будет видно что работали профессионалы! а при чем здесь первый курс, я тож щс на первом курси и что мне теперь не делать тежолые задачи по томучто на первом курсе неповерят?? Цитата "как это работает" а как очередь в магазине работает, также и здесь только здесь переменные ![]() |
Krjuger |
![]()
Сообщение
#11
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Цитата а как очередь в магазине работает, также и здесь только здесь переменные чтоб ты вреш и не краснееш!!!!.В магазине, из начала удаляют а в хвост добавляют,а в очереди не так,это уже дек получается ![]() |
amega |
![]()
Сообщение
#12
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Очередь - упорядоченный набор элеменотов, которые могут удалятся с одного ее конца ( начало очереди) и помещатся в другой конец (конец очереди). очередь обеспечивают диссциплину обслуживания "первый пришол первый ушол".
|
Krjuger |
![]()
Сообщение
#13
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Ладно не понял ты шутки)))Разьяснять не буду,тупо получиться.В общем про очередь амега правильно говорит)))Только не в магазине.
|
amega |
![]()
Сообщение
#14
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Разьяснять не буду,тупо получиться. ну а ты постарайся чтоб умно получилось |
Lapp |
![]()
Сообщение
#15
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
чтоб ты вреш и не краснееш!!!! Вот это ты называешь шуткой? Я бы извинился на твоем месте.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Krjuger |
![]()
Сообщение
#16
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
А я извинился,в привате,потому что это уже флуд,который никак не относится к теме,хотя создатель топа явно уже забил на эту тему.........
|
rs-mms |
![]()
Сообщение
#17
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: ![]() ![]() ![]() |
ничего я не "забила"! еще пытаюсь разобраться до сих пор....
|
Krjuger |
![]()
Сообщение
#18
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Господи....Короче береш листочек и ресуеш паровозик.В кадом вагоне сидит какая то информация(число ,буква,слово не важно),и у каждого вагончика есть ссылка на следующий вагончик.Суть очереди в чем,ты с начала твоего поезда можеш отсоединять вагоны и к концу поезда можеш присоединять ваготы.при это когда ты отсоединяеш вагон,ты разрываеш связ между отсоединяемым и следующим за ним,а когда добакляеш в конец,то ты добавляемому элементу должна показать,что бывший последний вагон стоит перед ним.Блин я уж хз как по другому обяснить.
Сообщение отредактировано: Krjuger - 27.05.2009 17:36 |
rs-mms |
![]()
Сообщение
#19
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: ![]() ![]() ![]() |
Ладно, больше не пристаю. Про вагончики понятно, спасибо большое)) Теорию читала, принцип понятен. Я имела в виду, что непонятно в самом коде, путаница с переменными, которые показывают одна на другую. Вот говорите, что каждую строчку комментировать никто не будет, а вышло бы быстрее и мне понятнее. Ну уже ладно, все сдала, в пятницу расскажу уж про вагончики!
|
Krjuger |
![]()
Сообщение
#20
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Да не в этом дело,просто конкретно обознач,за что отвечает каждая переменная.из того куска,что ты скидывала,я лиш 2 строчки не откоментировал.
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 0:08 |