IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Работа со списком, Помогите! Срочно нужна ваша помощь.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  1  +


Есть два упорядолченных по возрастанию списка.
Нужно из них сохдать третий тоже упорядоченный.

Проблема когда я записываю второй список, то почему то переписываю первый
Вот мой код:
Код
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 -


Прикрепленные файлы
Прикрепленный файл  TASK.PAS ( 2.75 килобайт ) Кол-во скачиваний: 114


--------------------
Возможно ты всего лишь человек,
но для кого-то ты весь мир..........
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ipkis,
во-первых, ты совершенно однотипно заполняешь первый и второй список. Зачем тебе в таком случае понадобились 2 разные процедуры?

Это первое. Второе: что ж ты хочешь, ты же сразу после создания и распечатывания списка указатель на него обnilяешь, следовательно ты его уже потерял...

Кстати, сам способ добавления элементов в список довольно сомнителен...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 23.08.2017 22:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"