Списки. Pascal

alexdog
Сообщения: 7
Зарегистрирован: 05 апр 2008, 21:38

05 апр 2008, 21:52

Может ктонибуть помочь с такой задачей?

Код: Выделить всё

Списки. Составить процедуру, проверяющая на равенство значения
элементов списков L1 и L2 и подсчитывающей количество одинаковых элементов в 
них. Используя данную процедуру, проанализировать пары списков К1 и К2; М1 и М2.
Списки заполнять данными из файла
drummer
Сообщения: 57
Зарегистрирован: 13 янв 2008, 18:43

06 апр 2008, 02:03

как списки хранятся?
alexdog
Сообщения: 7
Зарегистрирован: 05 апр 2008, 21:38

06 апр 2008, 10:54

drummer писал(а):как списки хранятся?

В задаче конкретно не указанно...
MOTOCoder
Сообщения: 542
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

06 апр 2008, 11:09

Дело в том, что способ хранения значения не имеет: в условии не сказано, что нужно написать процедуру для чтения списков из файла, нужно написать процедуру, оперирующую уже сформированными в памяти списками.
Ни что так не ограничивает фантазию программиста, как компилятор...
alexdog
Сообщения: 7
Зарегистрирован: 05 апр 2008, 21:38

06 апр 2008, 11:36

MOTOCoder писал(а):Дело в том, что способ хранения значения не имеет: в условии не сказано, что нужно прочитать списки из файла, нужно написать процедуру, оперирующую уже сформированными в памяти списками.


Да, да... ты прав... но как это сделать... может знаешь?
MOTOCoder
Сообщения: 542
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

06 апр 2008, 12:02

Наверное примерно так:
[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 будет количество равных элементов.
Ни что так не ограничивает фантазию программиста, как компилятор...
alexdog
Сообщения: 7
Зарегистрирован: 05 апр 2008, 21:38

06 апр 2008, 12:09

А на паскале как это реализовать...
MOTOCoder
Сообщения: 542
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

06 апр 2008, 12:16

Это и есть паскаль, просто стиль подсветки используется дельфовский.
Ни что так не ограничивает фантазию программиста, как компилятор...
alexdog
Сообщения: 7
Зарегистрирован: 05 апр 2008, 21:38

06 апр 2008, 12:18

Если несложно посмотри что я сдела... неуверен что правильно:

Код: Выделить всё

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.

Serge_Bliznykov
Сообщения: 366
Зарегистрирован: 31 авг 2007, 03:06

06 апр 2008, 12:26


alexdog, ВЫ НАРУШАТЕ ПРАВИЛА! зачем Вы создали одну и ту же тему в разных разделах? чтобы часть сообщений прочитать там, часть здесь!??! или чтобы помогающих Вам запутать?..
Рекомендую, свой написанный код из второй темы кинуть сюда. а тут тему закрыть/забыть как страшный сон!! и больше так не делать!


сорри. пока собирался ответить, мой пост потерял акуальность...
Ответить