Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type
- Rec1=Record
- tema:string;
- num:integer;
- raz:string;
- zap:integer;
- next1:^Rec1;
- end;
- Rec4=Record
- raz:string;
- zap:integer;
- next4:^Rec4;
- end;
- Rec3=Record
- num:integer;
- next3:^Rec3;
- next4:^Rec4;
- end;
- Rec2=Record
- tema:string;
- next2:^Rec2;
- next3:^Rec3
- end;
- var
- tmpM,HeadM:^Rec1;
- tmpT,HeadT:^Rec2;
- tmpN,HeadN,tmpk:^Rec3;
- tmp1:^Rec4; //head1
- z,numN,zapN:integer;
- temaN,temaP,razN:string;
- function check1(temaN:string):boolean;
- begin
- tmpT:=HeadT;
- check1:=False;
- while tmpT<>nil do
- begin
- if tmpT^.tema = temaN then
- begin
- check1:=True;
- exit;
- end;
- tmpT:=tmpT^.next2;
- end;
- end;
- function check2(numP:integer):boolean;
- begin
- tmpN:=HeadN;
- check2:=False;
- while tmpN<>nil do
- begin
- if tmpN^.num = numP then
- begin
- check2:=True;
- exit;
- end;
- tmpN:=tmpN^.next3;
- end;
- end;
- procedure SHOW3();
- begin
- tmpM:=HeadM;
- while tmpM<>nil do
- begin
- if tmpM^.zap >= 10 then
- begin
- writeln(tmpM^.tema, '/',tmpM^.num, '/', tmpM^.raz, '/',tmpM^.zap);
- end;
- tmpM:= tmpM^.next1;
- end;
- end;
- procedure SHOW4(temaP:string);
- begin
- tmpM:=HeadM;
- while tmpM<>nil do
- begin
- if tmpM^.tema = temaP then
- begin
- writeln(tmpM^.num, '/', tmpM^.raz, '/',tmpM^.zap);
- end;
- tmpM:= tmpM^.next1;
- end;
- end;
- procedure NEW(temaN,razN:string;numN,zapN:integer);
- begin
- new(tmpM);
- tmpM^.next1:= HeadM;
- HeadM:= tmpM;
- tmpM^.tema:= temaN;
- tmpM^.num:= numN;
- tmpM^.raz:= razN;
- tmpM^.zap:= zapN;
- if check1(temaN) then
- begin
- tmpT:= HeadT;
- while tmpT^.tema <> temaN do
- begin
- tmpT:=tmpT^.next2;
- end;
- if check2(numN) then
- begin
- tmpN:=HeadN;
- while tmpN^.num <> numN do
- begin
- tmpN:=tmpN^.next3;
- end;
- new(tmp1);
- tmp1^.next4:=tmpN^.next4;
- tmpN^.next4:=tmp1;
- tmp1^.raz:= razN;
- tmp1^.zap:= zapN;
- end
- else
- begin
- new(tmpN);
- tmpN^.next3:= HeadN;
- HeadN:= tmpN;
- tmpN^.num:= numN;
- new(tmp1);
- tmp1^.next4:=tmpN^.next4;
- tmpN^.next4:=tmp1;
- tmp1^.raz:= razN;
- tmp1^.zap:= zapN;
- end;
- end
- else
- begin
- new(tmpT);
- tmpT^.next2:= HeadT;
- HeadT:= tmpT;
- tmpT^.tema:= temaN;
- new(tmpk);
- tmpk^.next3:=tmpT^.next3;
- tmpT^.next3:=tmpk;
- tmpk^.num:= numN;
- new(tmp1);
- tmp1^.next4:=tmpk^.next4;
- tmpk^.next4:=tmp1;
- tmp1^.raz:= razN;
- tmp1^.zap:= zapN;
- end;
- end;
- //programme
- begin
- HeadM:=nil;
- HeadT:=nil;
- HeadN:=nil;
- while True do
- begin
- writeln('Для добавление сведений - введите 1');
- writeln('Для просмотра разделов с числом записей >=10 - введите 3');
- writeln('Для просмотра темы - введите 4');
- writeln('Для завершения работы - введите 0');
- write('Ввод: ');
- readln(z);
- if z = 0 then
- exit;
- if z = 3 then
- begin
- writeln('формат:тема,номер раздела,раздел,число записей');
- SHOW3();
- end;
- if z = 4 then
- begin
- writeln('Название темы: ');
- read(temaP);
- writeln('формат:тема,номер раздела,раздел,число записей');
- SHOW4(temaP);
- end;
- if z = 1 then
- begin
- write('Название темы: ');
- readln(temaN);
- write('Номер раздела: ');
- readln(numN);
- write('Название раздела: ');
- readln(razN);
- write('Число записей в разделе: ');
- readln(zapN);
- NEW(temaN,razN,numN,zapN);
- end;
- writeln('');
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement