![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
dream-x |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 64 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
Здравствуйте!
Составить процедуру, определяющуювхождение списка L1 в список L2 и наоборот. Если один из списков длиннее, удалить лишние элементы из его начала. Используя процедуру, проанализировать пары списков М1 и М2, N1 и N2.
Program Spisok;
Uses CRT;
Type
TData=integer;
PLink=^TElement;
TElement=Record
Data:TData;
Link:PLink;
End;
Procedure InPutList(n: integer; Var List:PLink);
Var
ElNew:PLink;
Value:TData;
i:Integer;
Begin
{ List:=NIL;}
For I:=1 To n Do
Begin
WriteLn('vvedite ',i,' element');
Read(value);
New(ElNew);
ElNew^.Data:=Value;
ElNew^.Link:=List;
List:=ElNew;
End;
End;
{----------------}
Procedure OutPutList(List:PLink);
Var
i:integer;
Begin
WriteLn('element spiska ');
While List <> NIL Do
Begin
Write(List^.Data,' ');
List:=List^.Link;
End;
WriteLn;
End;
{----------------}
Var
List1,List2,Elem,NewElem:PLink;
o,i,n,p,m:Integer;
ff:boolean;
Begin
ClrScr;
WriteLn('vvedite kol-vo elementov spiska ');
ReadLn(n);
WriteLn('vvedite kol-vo elementov spiska ');
ReadLn(m);
InPutList(n,List1);
InPutList(m,List2);
Writeln;
OutPutList(List1);
Writeln;
OutPutList(List2);
i:= 0;
While List1 <> nil do
Begin
If List1^.Data <> List2^.Data then
Begin
Writeln('ne vhodit 1 v 2');
ff:= True;
break
End;
List1:= List1^.Link;
List2:= List2^.Link;
End;
While List2 <> nil do
Begin
If List2^.Data <> List1^.Data then
Begin
Writeln('ne vhodit 2 v 1');
ff:= False;
break
End;
List1:= List1^.Link;
List2:= List2^.Link;
End;
If m > n Then o:= m-n else o:= n-m;
{ вот с этого момента я не могу понять
в чем моя ошибка}
New(NewElem);
If ff = True Then
for i:= 1 to o do
Begin
List1:= NewElem;
NewElem:= NewElem^.Link;
Dispose(NewElem);
end;
writeln('@@');
Outputlist(List1);
keypressed;
End.
Сообщение отредактировано: dream-x - 10.06.2008 10:35 |
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 3:03 |