Advertisement
dikdack

Untitled

Dec 15th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.25 KB | None | 0 0
  1. type
  2. Rec1=Record
  3. tema:string;
  4. num:integer;
  5. raz:string;
  6. zap:integer;
  7. next1:^Rec1;
  8. end;
  9. Rec4=Record
  10. raz:string;
  11. zap:integer;
  12. next4:^Rec4;
  13. end;
  14. Rec3=Record
  15. num:integer;
  16. next3:^Rec3;
  17. next4:^Rec4;
  18. end;
  19. Rec2=Record
  20. tema:string;
  21. next2:^Rec2;
  22. next3:^Rec3
  23. end;
  24.  
  25. var
  26. tmpM,HeadM:^Rec1;
  27. tmpT,HeadT:^Rec2;
  28. tmpN,HeadN,tmpk:^Rec3;
  29. tmp1:^Rec4; //head1
  30. z,numN,zapN:integer;
  31. temaN,temaP,razN:string;
  32.  
  33. function check1(temaN:string):boolean;
  34. begin
  35. tmpT:=HeadT;
  36. check1:=False;
  37. while tmpT<>nil do
  38. begin
  39. if tmpT^.tema = temaN then
  40. begin
  41. check1:=True;
  42. exit;
  43. end;
  44. tmpT:=tmpT^.next2;
  45. end;
  46. end;
  47.  
  48. function check2(numP:integer):boolean;
  49. begin
  50. tmpN:=HeadN;
  51. check2:=False;
  52. while tmpN<>nil do
  53. begin
  54. if tmpN^.num = numP then
  55. begin
  56. check2:=True;
  57. exit;
  58. end;
  59. tmpN:=tmpN^.next3;
  60. end;
  61. end;
  62.  
  63. procedure SHOW3();
  64. begin
  65. tmpM:=HeadM;
  66. while tmpM<>nil do
  67. begin
  68. if tmpM^.zap >= 10 then
  69. begin
  70. writeln(tmpM^.tema, '/',tmpM^.num, '/', tmpM^.raz, '/',tmpM^.zap);
  71. end;
  72. tmpM:= tmpM^.next1;
  73. end;
  74. end;
  75.  
  76. procedure SHOW4(temaP:string);
  77. begin
  78. tmpM:=HeadM;
  79. while tmpM<>nil do
  80. begin
  81. if tmpM^.tema = temaP then
  82. begin
  83. writeln(tmpM^.num, '/', tmpM^.raz, '/',tmpM^.zap);
  84. end;
  85. tmpM:= tmpM^.next1;
  86. end;
  87. end;
  88.  
  89.  
  90. procedure NEW(temaN,razN:string;numN,zapN:integer);
  91. begin
  92. new(tmpM);
  93. tmpM^.next1:= HeadM;
  94. HeadM:= tmpM;
  95. tmpM^.tema:= temaN;
  96. tmpM^.num:= numN;
  97. tmpM^.raz:= razN;
  98. tmpM^.zap:= zapN;
  99. if check1(temaN) then
  100. begin
  101. tmpT:= HeadT;
  102. while tmpT^.tema <> temaN do
  103. begin
  104. tmpT:=tmpT^.next2;
  105. end;
  106.  
  107. if check2(numN) then
  108. begin
  109. tmpN:=HeadN;
  110. while tmpN^.num <> numN do
  111. begin
  112. tmpN:=tmpN^.next3;
  113. end;
  114. new(tmp1);
  115. tmp1^.next4:=tmpN^.next4;
  116. tmpN^.next4:=tmp1;
  117. tmp1^.raz:= razN;
  118. tmp1^.zap:= zapN;
  119. end
  120. else
  121. begin
  122. new(tmpN);
  123. tmpN^.next3:= HeadN;
  124. HeadN:= tmpN;
  125. tmpN^.num:= numN;
  126. new(tmp1);
  127. tmp1^.next4:=tmpN^.next4;
  128. tmpN^.next4:=tmp1;
  129. tmp1^.raz:= razN;
  130. tmp1^.zap:= zapN;
  131. end;
  132. end
  133. else
  134. begin
  135. new(tmpT);
  136. tmpT^.next2:= HeadT;
  137. HeadT:= tmpT;
  138. tmpT^.tema:= temaN;
  139. new(tmpk);
  140. tmpk^.next3:=tmpT^.next3;
  141. tmpT^.next3:=tmpk;
  142. tmpk^.num:= numN;
  143. new(tmp1);
  144. tmp1^.next4:=tmpk^.next4;
  145. tmpk^.next4:=tmp1;
  146. tmp1^.raz:= razN;
  147. tmp1^.zap:= zapN;
  148. end;
  149.  
  150. end;
  151.  
  152.  
  153.  
  154. //programme
  155. begin
  156. HeadM:=nil;
  157. HeadT:=nil;
  158. HeadN:=nil;
  159.  
  160. while True do
  161. begin
  162. writeln('Для добавление сведений - введите 1');
  163. writeln('Для просмотра разделов с числом записей >=10 - введите 3');
  164. writeln('Для просмотра темы - введите 4');
  165. writeln('Для завершения работы - введите 0');
  166. write('Ввод: ');
  167. readln(z);
  168. if z = 0 then
  169. exit;
  170. if z = 3 then
  171. begin
  172. writeln('формат:тема,номер раздела,раздел,число записей');
  173. SHOW3();
  174. end;
  175. if z = 4 then
  176. begin
  177. writeln('Название темы: ');
  178. read(temaP);
  179. writeln('формат:тема,номер раздела,раздел,число записей');
  180. SHOW4(temaP);
  181. end;
  182. if z = 1 then
  183. begin
  184. write('Название темы: ');
  185. readln(temaN);
  186. write('Номер раздела: ');
  187. readln(numN);
  188. write('Название раздела: ');
  189. readln(razN);
  190. write('Число записей в разделе: ');
  191. readln(zapN);
  192. NEW(temaN,razN,numN,zapN);
  193. end;
  194. writeln('');
  195. end;
  196. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement