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

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

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

> Списки в Turbo Pascal
сообщение
Сообщение #1


Гость






Помогите плиз найти ошибку в программе: Условие=> Написать программу которая формирует список L, включив в него по одному разу элементы, которые входят в один из списков L1 или L2, но не входят во второй.
Проблема в том что программа сравнивает только последние элементы списков L1 и L2
Вот листинг=>

Код
Program SPISKI;
USES CRT;
Type spisok=^zveno;
     zveno = record
        Elem:integer;
        Next:spisok;
     end;
var  L,P:spisok;
     L1,L2:spisok;
     x,z: integer;
     n,s: integer;
       i: integer;
Procedure AddSpisok(var Top:Spisok; k:integer);{процедура добавления элемента в список}
var NewTop:Spisok;
begin
   New(NewTop);
   NewTop^.Elem:=k;
   NewTop^.Next:=Top;
   Top:=NewTop;
end;
Procedure Print(Top:spisok);{печать списка}
begin
    while Top<>nil do
    begin
    writeln(Top^.Elem);
    Top:=Top^.Next; end;
    writeln; end;
Function Otsev (TOP:spisok; j:integer ):boolean;
var P:spisok;
begin
   Otsev:=False;
   P:=TOP;
   while P<>nil  do
   if P^.Elem=j then Otsev:=True;
end;
begin
   clrscr;
   L1:=Nil;
   write('BBEDITE KOLICHESTBO ELEMENTOV SPISKA L1: '); readln(n);
   for i:=1 to n do begin read(x);
   AddSpisok(L1,x); end;
   L2:=Nil;
   write('BBEDITE KOLICHESTBO ELEMENTOV SPISKA L2: '); readln(s);
   for i:=1 to s do begin read(z);
   AddSpisok(L2,z); end;
   Begin
   P:=L1;  
   while P<>nil  do
   if P^.Elem<>L2^.Elem then AddSpisok(L,P^.elem); end;
   Begin
   P:=L2;  
   while P<>nil  do
   if P^.Elem<>L1^.Elem then AddSpisok(L,P^.elem); end;
   writeln('SPISOK L => ');
   Print(L);
   writeln('PRESS ANY KEY');
   READKEY;
   end.


Сообщение отредактировано: HAMELION -
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





- Текстовая версия 27.04.2024 12:08
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name