![]() |
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. |
![]() ![]() |
rs-mms |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 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 - это новый элемент, с циклом тоже понятно, а вот что на что указывает - непонятно)) ну и последний кусок, который с цикла начинается, это наверное собственно добавление и удаление элементов, опять же как это происходит непонятно... |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 23:55 |