![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Ipkis |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть два упорядолченных по возрастанию списка.
Нужно из них сохдать третий тоже упорядоченный. Проблема когда я записываю второй список, то почему то переписываю первый Вот мой код: Код program Scitalka; Uses Crt; Type Link=^lnk; lnk=record Num:Integer; next:Link; end; Var w,k,n,m,i,a:integer; Copy,Res,Elem,Elen:link; {==========================================================================} Procedure MyReadN(var C:Link);far; Var b:link; Begin inc(n); New(b); Readln(i); if i<>0 then b^.num:=i; c:=b; If i<>0 then MyReadN(c^.next) else c^.next:=nil; End; { M ====================================================================== } Procedure MyReadM(var t:Link);Far; Var r:link; Begin inc(m); New( R ); Readln(i); if i<>0 then r^.num:=i; t:=r; If i<>0 then MyReadM(t^.next) else t^.next:=nil; End; {///////////////////////////////////////////////////////////////////////////} {///////////////////////////////////////////////////////////////////////////} {///////////////////////////////////////////////////////////////////////////} {///////////////////////////////////////////////////////////////////////////} {///////////////////////////////////////////////////////////////////////////} Begin clrscr; {======================= Read ===============================================} MyReadN(Elen^.next); Elen:=Elen^.next; writeln('-----------------Spisok 1 with ',n-1); for i:=1 to n-1 do begin write(Elen^.num,' '); Elen:=Elen^.next; end; writeln; elen:=nil; elem:=nil; elem^.next:=nil; elen^.next:=nil; i:=0; MyReadM(Elem^.next); writeln('---------'); {===================== End Of REad ==========================================} writeln; Elem:=Elem^.next; writeln('-------------Spisok 2 with ',m-1); for i:=1 to m-1 do begin write(Elem^.num,' '); elem:=elem^.next; end; writeln; { k:=m+n-2; while w<k+1 do begin if Elem^.num=Elen^.num then begin Res^.num:=Elem^.num; res:=res^.next; Res^.num:=Elen^.num; res:=res^.next; inc(w); inc(w); elem:=elem^.next; elen:=elen^.next; continue; end; if Elem^.num<Elen^.num then begin Res^.num:=Elem^.num; elem:=elem^.next; res:=res^.next; dec(m); inc(w); end else begin Res^.num:=Elen^.num; elen:=elen^.next; res:=res^.next; dec(n); inc(w); end; end; } {===============================================================} {for i:=1 to w do begin write(res^.num,' '); Res:=Res^.next; end; } writeln('=================Spisok 1 with ',n-1); for i:=1 to n-1 do begin write(Elen^.num,' '); Elen:=Elen^.next; end; writeln; ReadLn; writeln('=============================================================='); end. Сообщение отредактировано: volvo - 26.05.2006 10:33 Прикрепленные файлы ![]() -------------------- Возможно ты всего лишь человек,
но для кого-то ты весь мир.......... |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ipkis,
во-первых, ты совершенно однотипно заполняешь первый и второй список. Зачем тебе в таком случае понадобились 2 разные процедуры? Это первое. Второе: что ж ты хочешь, ты же сразу после создания и распечатывания списка указатель на него обnilяешь, следовательно ты его уже потерял... Кстати, сам способ добавления элементов в список довольно сомнителен... |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 18:07 |