4TH.txt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. {�ணࠬ¬  ¤«ï ç⥭¨ï ¨§ ä ©«  áâப ¨ ®¤­®¢à¥¬¬¥­­®¥ á®§¤ ­¨¥ «¨­¥©­®£®
  2. âਭ ¯à ¢«¥­­®£® ᯨ᪠, 1-© - ª ª ¢ ä ©«¥, 2-© ®âá®àâ. ¯® ã¡ë¢, 3-© - ¯® ¢®§à.}
  3. {Copyright Innocenty Enikeew (YEAR-2000)084/1 17.10.2001}
  4. type
  5. PList = ^TList;
  6. chains = array[1..3] of PList; {Œ áᨢ 㪠§ â¥«¥© ­  í«-âë}
  7. TList = record
  8. s : string; {‡­ ç¥­¨¥ í«-â  á¯¨áª .}
  9. next : chains; {Œ áᨢ ááë«®ª. 1-© - ­  á«¥¤ãî騩
  10. 2-© - ­  á®àâ¨à®¢ ­­ë© ¯® ã¡ë¢
  11. 3-© - --------\\--------- ¢®§à®áâ}
  12. end;
  13. Const
  14. msgs : array [1..3] of string = ('­¥ ®âá®àâ¨à®¢ ­­ë©','®âá®àâ¨à®¢ ­­ë© ¯® ã¡ë¢ ­¨î','®âá®àâ¨à®¢ ­­ë© ¯® ¢®§à®áâ ­¨î');
  15. {Œ áᨢ á®®¡é¥­¨© ® á®àâ¨à®¢ª¥}
  16. {--------------------------------------------------------}
  17. Procedure CreateList(var F:text;var hs,ts : chains);
  18. {�à®æ¥¤ãà  ç⥭¨ï í«¥¬¥­â®¢ ¨§ ä ©«  á ®¤­®¢à¥¬¥­­®© á®àâ¨à®¢ª®© ¯® ã¡ë¢ ­¨î
  19. ¨ ¢®§à®áâ ­¨î
  20. ‚室­ë¥:
  21. F - ⥪áâ®¢ë© ä ©«, ®âªã¤  áç¨â¨¢ îâáï ¤ ­­ë¥
  22. ‚ë室­ë¥
  23. hs - ¬ áᨢ 㪠§ â¥«¥© ­  £®«®¢ë ᯨ᪮¢
  24. ts - ---------//--------- 墮áâë ᯨ᪮¢
  25. €«£®à¨â¬ à ¡®âë:
  26. 1) ‘ç¨â뢠¥âáï ¯¥à¢ë© í«¥¬¥­â, ª®â®àë¬ ¨­¨æ¨ «¨§¨àãîâáï ‚‘… 㪠§ â¥«¨
  27. 2) �®ª  ä ©« ­¥ ª®­ç¨âáï, á®§¤ ¥¬ ¨ áç¨â뢠¥¬ á«¥¤ãî騩 í«¥¬¥­â. ‡ ¯¨á뢠¥¬
  28. ¢ 1-© 㪠§ â¥«ì
  29. 3) � å®¤¨¬ ¬¥áâ® ¯® ¢®§à áâ ­¨î. ‚áâ ¢«ï¥¬ â㤠, ¯®«ãç ï 2-î áá뫪ã
  30. 4) ------\\-------- ã¡ë¢ ­¨î. ----------\\----------- 3-î
  31. 5) �¥à¥å®¤ ­¥ 2
  32. }
  33. var
  34. i : integer; {“ª §ë¢ ¥â ­®¬¥à áá뫪¨}
  35. n,c : PList; {á - ­®¢ë© á®§¤ ­­ë©, n - "¡¥£ã­®ª" ¤«ï ¯®¨áª  ¬¥áâ }
  36. begin
  37. New(Hs[1]); { \ }
  38. Hs[2]:=Hs[1]; { | }
  39. Hs[3]:=Hs[1]; { | }
  40. for i := 1 to 3 do { | ‘®§¤ ­¨¥ }
  41. begin { | ¨ ç⥭¨¥ �…�‚ŽƒŽ í«¥¬¥­â }
  42. ts[i]:=hs[1]; { | }
  43. Hs[1]^.next[i] := nil; { | }
  44. end; { | }
  45. ReadLn(F,Hs[1]^.s); { / }
  46. while not EOF(F) do {Žá­®¢­®© 横« áç¨â뢠­¨ï í«¥¬¥­â®¢}
  47. begin
  48. New(c);for i := 1 to 3 do c^.next[i]:=nil; {‚뤥«¥­¨¥ ­®¢®£® í«-â  ¨
  49. ¨­¨æ¨ «¨§ æ¨ï ¥£® ááë«®ª}
  50. ts[1]^.Next[1] := c; {‡ ­¥á¥¬ ¥£® ¢ ª®­¥æ ¯¥à¢®© 楯®çª¨}
  51. ts[1]:=c; {¨ ᤢ¨­¥¬ ¥¥ 墮áâ}
  52. ReadLn(c^.s);
  53. for i := 2 to 3 do
  54. {„ ­­ë© 横« ®¡ê¥¤¨­ï¥â ¢ ᥡ¥ ®¤­®¢à¥¬¥­­®¥ á®§¤ ­¨¥ 2 ¨ 3-© áá뫪¨,
  55. â.ª ®­¨ ®â«¨ç îâáï «¨èì §­ ª®¬ áà ¢­¥­¨ï}
  56. begin
  57. if ((c^.s > hs[i]^.s) and (i=2)) or ((c^.s < hs[i]^.s) and (i=3)) then
  58. {�஢¥à塞, ­¥ ­ ¤® «¨ § ¬¥­¨âì £®«®¢ã ­®¢ë¬ í«-⮬}
  59. begin
  60. c^.next[i] := hs[i];
  61. hs[i]:=c;
  62. end
  63. else {ˆ­ ç¥ ¨é¥¬ ¥¬ã ¬¥áâ® ¢ 㦥 á®§¤ ­­®¬ ᯨ᪥}
  64. begin
  65. n:=hs[i]; {ˆ­¨æ. "¡¥£ã­®ª"}
  66. while (n<>ts[i]) and
  67. ( {�®ª  ­¥ ¯®á«¥¤­¨© í«-â,}
  68. ((n^.next[i]^.s > c^.s) and (i=2)) or {¨ ¢ë¯®«­ï¥âáï ®âá®àâ¨à®¢ ­­®áâì}
  69. ((n^.next[i]^.s < c^.s) and (i=3)) {¯¥à¥¬¥é ¥¬ "¡¥£ã­®ª"}
  70. ) do n:=n^.next[i];
  71. c^.next[i] := n^.next[i]; {‚áâ ¢«ï¥¬ ­ è í«-â ¬¥¦¤ã "¡¥£ã­ª®¬"}
  72. n^.next[i] := c; {¨ á«¥¤ãî騬 §  ­¨¬}
  73. if n = ts[i] then ts[i] := c; {�ਠ­¥®¡å®¤¨¬®á⨠- ᬥ頥¬ 墮áâ}
  74. end; {Š®­¥æ ¤®¡ ¢«¥­¨ï í«-â  ¢ á®àâ.ᯨ᮪}
  75. end; {Š®­¥æ 横«  ¤«ï 2-å á®àâ¨à®¢®ª}
  76. end; {Š®­¥æ 横«  ç⥭¨ï ä ©« }
  77. end;{CreateList}
  78. {------------------------------}
  79. Procedure WriteList(var F:text;hs,ts:chains;order:integer);
  80. {�à®æ¥¤ãà  ¢ë¢®¤  ᯨ᪠, § ¤ ­­®£® hs ¨ ts ¢ ä ©« F
  81. Order - ­®¬¥à ᯨ᪠, ¯® ª®â®à®¬ã ¡¥¦ âì}
  82. var
  83. c : Plist; {�¥£ã­®ª}
  84. begin
  85. c:=hs[order]; {¥£® ¨­¨æ¨ «¨§ æ¨ï}
  86. repeat
  87. WriteLn(c^.s);
  88. c:=c^.next[order]; {¯à®¤¢¨¦¥­¨¥ ¯® ᯨáªã}
  89. until c = ts[order]; {�ਧ­ ª ª®­æ  ᯨ᪠ - ¢ë¢®¤ 墮áâ }
  90. end;{WriteList}
  91. {------------------------------}
  92. { ƒŽ‹Ž‚�މ ŒŽ„“‹œ }
  93. var
  94. heads,tails : chains; {Œ áá¨¢ë £®«®¢ ¨ 墮á⮢}
  95. ch : integer; {¯¥à¥¬¥­­ ï ¢ë¡®à  ¢ à¨ ­â  ¢ë¢®¤ }
  96. begin
  97. Assign(input,'4th.txt');
  98. {$I-}
  99. Reset(INPUT);
  100. if IOResult <> 0 then
  101. begin
  102. WriteLn('Error opening ''4th.txt''');
  103. Halt(255);
  104. end;
  105. {$I+}
  106. CreateList(INPUT,Heads,Tails); {‘®§¤ ­¨¥ ᯨ᪠}
  107. Close(Input);
  108. Assign(Input,'con'); {ˆ­¨æ¨ «¨§ æ¨ï ª« ¢¨ âãàë ­  ¬¥áâ®}
  109. Reset(Input);
  110. WriteLn('‘¯¨á®ª á®§¤ ­! ‚¢¥¤¨â¥:');
  111. WriteLn(' 1 - ­¥ ®âá®àâ¨à®¢ ­ ');
  112. WriteLn(' 2 - ®âá®àâ¨à®¢ ­ ¯® ã¡ë¢ ­¨î'); {‚뢮¤ ¯à¨£« è¥­¨ï}
  113. WriteLn(' 3 - ®âá®àâ¨à®¢ ­ ¯® ¢®§à®áâ ­¨î');
  114. ch:=0;
  115. repeat
  116. Write('‚¢¥¤¨â¥ ç¨á«® ®â 1-£® ¤® 3-å: '); {‡ ¯à®á}
  117. Read(ch);
  118. until ch in [1..3];
  119. WriteLn('‚ë ¢ë¡à «¨ ',msgs[ch]); {‘¨£­ «¨§ æ¨ï ¢ë¡®à }
  120. Assign(output,'4th.out');
  121. Rewrite(output);
  122. if IOResult <> 0 then
  123. begin
  124. WriteLn('Error opening ''4th.out'' for writing :( ');
  125. Halt(254);
  126. end;
  127. WriteLn('Žà¨£¨­ «:');
  128. WriteList(OUTPUT,heads,tails,1); {‚뢮¤ á­ ç «  ¨á室­®£® ᯨ᪠}
  129. WriteLn('�¥§ã«ìâ â:');
  130. WriteList(OUTPUT,heads,tails,ch); {‡ â¥¬ - ¢ë¡à ­­®£® ¯®«ì§®¢ â¥«¥¬}
  131. while Heads[1] <> nil do
  132. {Žç¨á⪠ ¢á¥£® ᯨ᪠, Heads[1] - ¡¥£ã­®ª, Tails[1] - ¢à¥¬¥­­ ï ¯¥à¥¬¥­­ ï}
  133. begin
  134. Tails[1] := Heads[1]^.next[1];
  135. Dispose(heads[1]);
  136. Heads[1]:=tails[1];
  137. end;
  138. end.