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

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

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

 
 Ответить  Открыть новую тему 
> Динамические списки, Сравнение элементов списка 1 и 2 и запись в 3
сообщение
Сообщение #1


Гость






я создал туже тему в разделе 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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


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

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

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



--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






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

smile.gif

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

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

Поиск, кстати, может тебе в этом помочь - подобная задача уже выкладывалась...

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


Гость






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©;
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;


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

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

Поиском пользовался но того что надо не нашел.
 К началу страницы 
+ Ответить 

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

 





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