Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамические списки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
feiqin
я создал туже тему в разделе delphi blink.gif но решил что это задание под консоль delphi можно написать и в этом разделе(т к сдесь больше народу). Здесь я более обширно опишу свою задачу:

Даны два списка L1 и L2 вещественных чисел. Написать подпрограммы,
возвращающие новый список L, включающий по
одному разу числа
, которые:
а) входят одновременно в оба списка;
б) входят хотя бы в один из списков;
в) входят в один из списков L1 и L2, но в то же время не входят
в другой из них;
г) входят в список L1 но не входят в список L2.
Но главное что я хочу понять это как сравнивать элементы в каждом из списков друг с другом и чтобы этот принцип можно было применить в моей задаче? и вопрос 2: что в моей задаче означает выделенная синим цветом строка?

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
pe=^spisok;
	spisok=record
		t:real;
		p:pe;
		end;
var
elem, beg,elem2,beg2,elem3,beg3:pe;
 ch:char;  n, a,b:integer;
begin
//------------заполняем первый список--------
new(elem); beg:=elem;
elem^.p:=elem;
	while true do
begin
Write('Vvedite_choslo.: ');
Readln(Elem^.t);
write('Povtorit_vvod y/n');
readln(ch);
if (ch='n') then begin
elem^.p:=nil;
break;
 end else
	begin
	new(elem^.p);
	elem:=elem^.p;
	end;
end;
//------------заполняем второй список--------
 new(elem2); beg2:=elem2;
elem2^.p:=elem2;
	while true do
begin
Write('Vvedite_choslo_vo_vtoroi.: ');
Readln(Elem2^.t);
write('Povtorit_vvod y/n');
readln(ch);
if (ch='n') then begin
elem2^.p:=nil;
break;
 end else
	begin
	new(elem2^.p);
	elem2:=elem2^.p;
	end;

 //вот сдесь должно быть сравнение списков и занесение их в третий???

end;
Writeln('-------------------------');
writeln('Vivod_1-go');
elem:=beg;
n:=0;
repeat
inc(n);
	writeln(N,':',elem^.t:3:2);
	elem:=elem^.p;
until elem=nil;
Writeln('--------------------------');
 writeln('Vivod_2-go');
elem2:=beg2;
n:=0;
repeat
inc(n);
	writeln(N,':',elem2^.t:3:2);
	elem2:=elem2^.p;
until elem2=nil;
readln;
end.

мисс_граффити
1. видимо, нужна функция, проверяющая, входит ли число в список.
ей передается число, она проходит по элементам, пока не дойдет до конца или не найдет нужный элемент.

2. Синим... {$APPTYPE CONSOLE} и комментарии. Что из этого интересует?

3. Из делфи тему удалить?

volvo
Юля, синим - это здесь:
Цитата(feiqin @ 28.05.2007 16:52)
Написать подпрограммы,
возвращающие новый список L, включающий по
одному разу числа
, которые:

smile.gif

feiqin, это значит, что если число уже было включено в список-результат однажды, то второе его включение производить не надо...

Цитата
как сравнивать элементы в каждом из списков друг с другом и чтобы этот принцип можно было применить в моей задаче?
2 вложенных цикла... В первом пробегаешь по всему списку L1, и для каждого его элемента запускаешь внутренний цикл - по всем элементам списка L2... Так ты сможешь сравнить "каждый с каждым"...

Поиск, кстати, может тебе в этом помочь - подобная задача уже выкладывалась...
feiqin
1)Вот с помощью этого кода я нахожу элементы которые входят в оба списка:

 BEGIN
  elem:=beg;
  n:=0;
  elem2:=beg2;
 repeat
 c1:=0;
 c1:=elem^.t;
 elem:=elem^.p;
        elem2:=beg2;
         repeat
          c2:=0;
          c2:=elem2^.t;
          elem2:=elem2^.p;
          if c2=c1 then  BEGIN
                INC(c);
                        new(elem3);
                           beg3:=elem3;
                                elem3^.p:=elem3;
	                                while c=1 do
                                                begin
                                                        Elem3^.t:=c2;
                                                        elem3:=elem3^.p;
                                                        c:=0;
        	                                end;
                                                 new(elem3^.p);

                         END;
         until elem2=nil;
until elem=nil;
       END;


Я надеюсь что это правильно.

А вот насчет того чтобы записать элементы которые Входят ХОТЯБЫ в один из списков(Задание под б), я догадаться не могу, я думал конечно чтобы записать все списки во множества и потом работать с ними, или есть другие способы? если не трудно то отпишитесь.

Поиском пользовался но того что надо не нашел.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.