Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2010, 11:15   #1
nataliya234
 
Регистрация: 14.05.2010
Сообщений: 9
По умолчанию списки

type
te=integer;
spisok=^zveno;
zveno=record
elem:te;
sled:spisok;
описать и проверить процедуру или функцию, которая проверяет есть ли в списке хотя бы два одинаковых элемента.
nataliya234 вне форума Ответить с цитированием
Старый 14.05.2010, 11:16   #2
nataliya234
 
Регистрация: 14.05.2010
Сообщений: 9
По умолчанию

есть примерный код программы
type
te=integer;
spisok=^zveno;
zveno=record
elem:te;
sled:spisok;
end;

var
m11,m12:spisok;
t:boolean;


procedure TForm1.N2Click(Sender: TObject);
procedure sravn(m11:spisok; var t:boolean);
var
n12,n11,p:spisok;
i,j:integer;
begin
n11:=p;
n12:=p;
i:=1;
j:=0;
t:=true;
while (n11<>nil) and t do begin
while (n12<>nil) and t do begin
if (n11^.elem=n12^.elem) and (i=j) then t:=false;
n12:= n12^.sled;
j:=j+1;
end;
n11 := n11^.sled;
i:=i+1;
end;
end;
begin
sravn (m11,t);
if t then Edit1.Text:='есть'
else Edit1.Text:='нет';
end;

procedure TForm1.N1Click(Sender: TObject);
var
i:integer;
begin
m12:=nil;
for i:=1 to Memo1.Lines.Count do
begin
new(m11);
m11^.elem:=StrToInt(Memo1.Lines[i-1]);
m11^.sled:=m12;
m12:=m11;
end;
end;


procedure TForm1.N3Click(Sender: TObject);
begin
close;
end;

end.
nataliya234 вне форума Ответить с цитированием
Старый 14.05.2010, 13:33   #3
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Немножко подправил процедуру сравнения. Должна работать.
Код:
procedure sravn(m11:spisok; var t:boolean);
var
n12,n11,p:spisok;
i,j:integer;
begin
n11:=m11;(* m11 - "голова" списка*)
t:=true;
while (n11<>nil) and t do begin
n12:=n11^.sled;
while (n12<>nil) and t do begin
t := (n11^.elem<>n12^.elem);
n12:= n12^.sled;
end;
n11 := n11^.sled;
end;
end;
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 14.05.2010, 20:45   #4
nataliya234
 
Регистрация: 14.05.2010
Сообщений: 9
По умолчанию

вообщем эта процедура сравнивает только 1 элемент со 2, 2 с 3 и тд, а нужно чтобы 1 со 2,3,4,5ж 2,с 3,4,5 и тд

Последний раз редактировалось nataliya234; 15.05.2010 в 13:24.
nataliya234 вне форума Ответить с цитированием
Старый 15.05.2010, 00:01   #5
nataliya234
 
Регистрация: 14.05.2010
Сообщений: 9
По умолчанию

и она работает только если все элементы равны друг другу (например 33333)

Последний раз редактировалось nataliya234; 15.05.2010 в 13:26.
nataliya234 вне форума Ответить с цитированием
Старый 15.05.2010, 14:11   #6
nataliya234
 
Регистрация: 14.05.2010
Сообщений: 9
По умолчанию

люди помогите плиз, очень срочно нужно
nataliya234 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки ANG3 Microsoft Office Word 4 22.11.2009 21:00
Списки Chief Паскаль, Turbo Pascal, PascalABC.NET 4 03.06.2009 18:29
с++ списки Blizzz Общие вопросы C/C++ 3 04.12.2008 21:19
На списки... Neznau Паскаль, Turbo Pascal, PascalABC.NET 1 02.07.2008 19:49