Страница 1 из 2
Списки. Pascal
Добавлено: 05 апр 2008, 21:52
alexdog
Может ктонибуть помочь с такой задачей?
Код: Выделить всё
Списки. Составить процедуру, проверяющая на равенство значения
элементов списков L1 и L2 и подсчитывающей количество одинаковых элементов в
них. Используя данную процедуру, проанализировать пары списков К1 и К2; М1 и М2.
Списки заполнять данными из файла
Re: Списки. Pascal
Добавлено: 06 апр 2008, 02:03
drummer
как списки хранятся?
Re: Списки. Pascal
Добавлено: 06 апр 2008, 10:54
alexdog
drummer писал(а):как списки хранятся?
В задаче конкретно не указанно...
Re: Списки. Pascal
Добавлено: 06 апр 2008, 11:09
MOTOCoder
Дело в том, что способ хранения значения не имеет: в условии не сказано, что нужно написать процедуру для чтения списков из файла, нужно написать процедуру, оперирующую уже сформированными в памяти списками.
Re: Списки. Pascal
Добавлено: 06 апр 2008, 11:36
alexdog
MOTOCoder писал(а):Дело в том, что способ хранения значения не имеет: в условии не сказано, что нужно прочитать списки из файла, нужно написать процедуру, оперирующую уже сформированными в памяти списками.
Да, да... ты прав... но как это сделать... может знаешь?
Re: Списки. Pascal
Добавлено: 06 апр 2008, 12:02
MOTOCoder
Наверное примерно так:
[syntax='Delphi']
function Compare(R1,R2:PListItem):Boolean;
var
P1,P2:PListItem;
Flag:boolean;
begin
P1:=R1;
P2:=R2;
c:=0;
Flag:=true;
while P1<>nil do
begin
if P1^.Data=P2^.Data then
inc(c)
else
Flag:=False;
P2:=P2^.Link;
P1:=P1^.Link;
end;
Compare:=Flag;
end;
[/syntax]
В переменной C будет количество равных элементов.
Re: Списки. Pascal
Добавлено: 06 апр 2008, 12:09
alexdog
А на паскале как это реализовать...
Re: Списки. Pascal
Добавлено: 06 апр 2008, 12:16
MOTOCoder
Это и есть паскаль, просто стиль подсветки используется дельфовский.
Re: Списки. Pascal
Добавлено: 06 апр 2008, 12:18
alexdog
Если несложно посмотри что я сдела... неуверен что правильно:
Код: Выделить всё
Program sd;
uses crt;
Type
NameStr=string[20];
Link=^Auto;
Auto=record
Name:nameStr;
S1:integer;
S2:integer;
S3:integer;
Next:Link;
end;
var
P,First:Link; q:^auto;
NamFind:nameStr;
V:0..4;
EndMenu:boolean;
f1,f2: file of Auto;
Procedure open1;
begin
assign(f1,'c:\1.txt');
end;
Procedure open2;
begin
assign(f2,'c:\2.txt');
end;
Function FindName(FN:nameStr):Link;
var
Curr:Link;
begin
Curr:=First;
while Curr<> nil do
if Curr^.Name=FN then
begin
FindName:=Curr;
exit;
end else
Curr:=Curr^.Next;
FindName:=Nil;
end;
Procedure AddFirst(A:Link);
Begin
A^.next:=first;
first:=a;
end;
procedure Delfirst(var a:link);
begin
a:=first;
first:=first^.next;
end;
procedure delAfter(Old:Link; var a:link);
begin
A:=Old^.next;
Old^.next:=old^.next^.next;
end;
procedure sa;
begin
with P^ do begin
p:=new(link);
write('Ќ*§ў**ЁҐ');
readln(P^.name);
write('1 §**зҐ*ЁҐ: ');
readln(P^.S1);
write('2 §**зҐ*ЁҐ: ');
readln(P^.S2);
write('3 §**зҐ*ЁҐ: ');
readln(P^.S3);
addfirst(p);
end; end;
procedure InpAvto;
var z,d:byte;
begin
Writeln('ўўҐ¤ЁвҐ ў Є*Є®© Ё§ бЇЁбЄ®ў ўл е®вЁвҐ ¤®Ў*ўЁвм');
Writeln('1 - ЇҐаўл©(L1) 2 - ўв®а®©(L2)');
readln(d);
if d=1 then begin
open1;
reset(f1);
seek(f1,filesize(f1));
sa;
writeln('‘®еа**Ёвм?');
readln(z);
if z=1 then begin
write(f1,P^);
end;
close(f1);
end;
{end;}
if d=2 then begin
open2;
reset(f2);
seek(f2,filesize(f2));
sa;
writeln('‘®еа**Ёвм?');
readln(z);
if z=1 then begin
write(f2,P^);
end;
close(f2);
end;
end;
procedure myList;
var
curr:link; i,j:byte;
begin
i:=15;
j:=15;
open1;
reset(f1);
curr:=first;
gotoxy(7,13);
writeln('ЇҐаўл© (L1)');
while not(eof(f1)) do begin
read(f1,curr^);
gotoxy(6,i);
writeln(curr^.name);
gotoxy(10,i);
Write(curr^.S1);
gotoxy(13,i);
write(curr^.S2);
gotoxy(16,i);
write(curr^.S3);
curr:=curr^.next;
inc(i);
end;
open2;
reset(f2);
curr:=first;
gotoxy(26,13);
writeln('ўв®а®© (L2)');
while not(eof(f2)) do begin
read(f2,curr^);
gotoxy(26,j);
writeln(curr^.name);
gotoxy(30,j);
Write(curr^.S1);
gotoxy(33,j);
write(curr^.S2);
gotoxy(36,j);
write(curr^.S3);
curr:=curr^.next;
inc(j);
curr:=curr^.next;
end;
readln;
end;
begin
new(p);
endmenu:=false;
repeat
clrscr;
writeln('“Є*¦ЁвҐ ўЁ¤ а*Ў®вл');
writeln('1 - §*ЇЁбм ЇҐаўл¬ ў бЇЁб®Є');
writeln('2 - Їа®б¬®ва ўбҐе бЇЁбЄ®ў');
writeln('0 - ЋЄ®*з**ЁҐ а*Ў®вл');
readln(v);
case v of
1:inpAvto;
2:Mylist;
end;
else
endMenu:=true;
end;
until endMenu;
dispose(p);
end.
Re: Списки. Pascal
Добавлено: 06 апр 2008, 12:26
Serge_Bliznykov
alexdog, ВЫ НАРУШАТЕ ПРАВИЛА! зачем Вы создали одну и ту же тему в разных разделах? чтобы часть сообщений прочитать там, часть здесь!??! или чтобы помогающих Вам запутать?..
Рекомендую, свой написанный код из второй темы кинуть сюда. а тут тему закрыть/забыть как страшный сон!! и больше так не делать!
сорри. пока собирался ответить, мой пост потерял акуальность...