Помогите пожалуйста, нужно написать создание динамического списка с добавлением в элементов в конец. элементами является запись с полями название, цвет, цена, кол-ва, ширина, страна. Вот что сделал я, но, что-то там не так..(
Код:
Program SPISOK;
uses crt;
Type
color1=(red,white,black);
M=record
name:string[15];
color:color1;
price:word;
kolvo:word;
wide:byte;
country:string[15];
end;
FF=file of M;
Ptr=^Elem;
elem=record
inf:M;
next:ptr;
end;
procedure Add_Beg (Var FirstPtr:Ptr; Val:M);
Var k:ptr; i,j:Byte; q:color1; x:M;
Begin
new(k);
For i:=1 to N do
begin
WriteLn ('Vvedite name');
ReadLn (x[i].name);
WriteLn ('Vvedite color: 0 - red; 1 - white; 2 - black;');
ReadLn (j);
x[i].color:=color1(j);
WriteLn ('Vvedite price');
ReadLn (x[i].price);
WriteLn ('Vvedite kolvo');
ReadLn (x[i].kolvo);
WriteLn ('Vvedite wide');
ReadLn (x[i].wide);
WriteLn ('Vvedite country');
ReadLn (x[i].country);
WriteLn;
WriteLn;
end;
k^.inf:=M;
k^.next:=FirstPtr;
FirstPtr:=k;
end;
Procedure Add_End (FirstPtr:Ptr; Val:M; var LastPtr:ptr);
Var k:ptr;
begin
k:=firstPtr;
While k^.next<>nil do
k:=k^.next;
LastPtr:=k;
New(k);
LastPtr^.next:=k;
For i:=1 to N do
begin
WriteLn ('Vvedite name');
ReadLn (x[i].name);
WriteLn ('Vvedite color: 0 - red; 1 - white; 2 - black;');
ReadLn (j);
x[i].color:=color1(j);
WriteLn ('Vvedite price');
ReadLn (x[i].price);
WriteLn ('Vvedite kolvo');
ReadLn (x[i].kolvo);
WriteLn ('Vvedite wide');
ReadLn (x[i].wide);
WriteLn ('Vvedite country');
ReadLn (x[i].country);
WriteLn;
WriteLn;
end;
k^.inf:=Val;
LastPtr:=k;
end;
procedure creat_beg (var n:byte; var firstptr:ptr);
var
i,j:Byte; q:color1;
Begin
firstptr:=nil;
for i:=1 to n do
begin
begin
WriteLn ('Vvedite name');
ReadLn (x[i].name);
WriteLn ('Vvedite color: 0 - red; 1 - white; 2 - black;');
ReadLn (j);
x[i].color:=color1(j);
WriteLn ('Vvedite price');
ReadLn (x[i].price);
WriteLn ('Vvedite kolvo');
ReadLn (x[i].kolvo);
WriteLn ('Vvedite wide');
ReadLn (x[i].wide);
WriteLn ('Vvedite country');
ReadLn (x[i].country);
WriteLn;
WriteLn;
end;
add_end(firstptr,x);
end;
end;
procedure print_list(var firstptrtr);
var q:ptr;
begin
q:=firstptr;
while q<>nil do
begin
Write(q^.inf.name);
case q^.inf.color of
red:writeln('red');
white:writeln('white');
black:writeln('black');
end;
write(q^.inf.price);
write(q^.inf.kolvo);
write(q^.inf.wide);
write(q^.inf.country);
q:=q^.next;
end;
end;