2.PAS 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. const
  2. InName = '2.txt';
  3. OutName = '2.out';
  4. type
  5. plist = ^tlist;
  6. tlist = record
  7. s:string;
  8. next:plist;
  9. end;
  10. var
  11. strings,cs,ls : plist;
  12. tocopy,cc,lc : plist;
  13. INP,OUTP : text;
  14. counter : word;
  15. NB,KB,M : word;
  16. begin
  17. Assign(INP,InName);
  18. {$I-}
  19. Reset(INP);
  20. If IOResult <> 0 then
  21. begin
  22. WriteLn('Žè¨¡ª  ®âªàëâ¨ï ä ©«  ''',InName,''', ª®¤: ', IOResult);
  23. Halt(200);
  24. end;
  25. Assign(OUTP,OutName);
  26. Rewrite(OUTP);
  27. If IOResult <> 0 then
  28. begin
  29. WriteLn('Žè¨¡ª  ®âªàëâ¨ï ä ©«  ¤«ï ç⥭¨ï ''',OutName,''', ª®¤: ', IOResult);
  30. Halt(201);
  31. end;
  32. {$I+}
  33. Write('‚¢¥¤¨â¥ ­®¬¥à ¯¥à¢®© áâப¨ á ª®â®à®© ª®¯¨à®¢ âì: ');
  34. ReadLn(NB);
  35. Write('‚¢¥¤¨â¥ ­®¬¥à ¯®á«¥¤­¥© áâப¨ ¤® ª®â®à®© ª®¯¨à®¢ âì: ');
  36. ReadLn(KB);
  37. Write('‚¢¥¤¨â¥ ­®¬¥à áâப¨ ¯¥à¥¤ ª®â®à®© ¢áâ ¢¨âì: ');
  38. ReadLn(M);
  39. counter:=1;
  40. New(cs);
  41. New(cc);
  42. strings := cs;
  43. tocopy := cc;
  44. while not EOF(INP) do
  45. begin
  46. ReadLn(INP,cs^.s);
  47. New(cs^.next);
  48. if counter in [NB..KB] then
  49. begin
  50. cc^.s := cs^.s;
  51. lc := cc;
  52. New(cc^.next);
  53. cc:=cc^.next;
  54. end;
  55. ls:=cs;
  56. cs:=cs^.next;
  57. inc(counter);
  58. end;
  59. Dispose(cc);Dispose(cs);
  60. lc^.next:=nil;
  61. ls^.next:=nil;
  62. Close(INP);
  63. counter := 1;
  64. cs:=strings;
  65. cc:=tocopy;
  66. while cs<>nil do
  67. begin
  68. if counter = M then
  69. while cc<>nil do
  70. begin
  71. WriteLn(OUTP,cc^.s);
  72. cc:=cc^.next;
  73. end;
  74. WriteLn(OUTP,cs^.s);
  75. cs:=cs^.next;
  76. inc(counter);
  77. end;
  78. if counter = M then
  79. while cc<>nil do
  80. begin
  81. WriteLn(OUTP,cc^.s);
  82. cc:=cc^.next;
  83. end;
  84. Close(OUTP);
  85. end.