BR7.PAS 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. const
  2. Len = 20;
  3. High = 10;
  4. Inp1 = 'input1.txt';
  5. Inp2 = 'input2.txt';
  6. Out1 = 'output1.txt';
  7. type
  8. Pty = ^ty;
  9. ty = record
  10. name : Char;
  11. next : Pty;
  12. end;
  13. var
  14. Root1,Root2,Nroot : Pty;
  15. f1,f2 : text;
  16. {--------------------------------} {Finde Spase For New Iteme and includ it}
  17. procedure Sort(var NRoot,Tec : pty;posl : Pty);
  18. var
  19. Pred,sled : Pty;
  20. begin
  21. if Tec^.name < Nroot^.name Then begin
  22. Tec^.next := Nroot;
  23. Nroot := Tec;
  24. end
  25. else begin
  26. Pred := Nroot;
  27. Sled := Nroot^.next;
  28. while (Tec^.name >= Sled^.name) and (Sled <> Posl) do begin
  29. Pred := Sled;
  30. Sled := Sled^.next;
  31. end;
  32. pred^.next := Tec;
  33. Tec^.next := Sled;
  34. end;
  35. end;
  36. {--------------------------------}
  37. {read m from file==========================================}{P1}
  38. Procedure ReadM(var root : pty;inp : string);
  39. var
  40. Tec,Pred : Pty;
  41. begin
  42. Assign(f1,Inp);
  43. Reset(f1);
  44. New(tec);
  45. Read(f1,Tec^.Name);
  46. Root := Tec;
  47. Root^.next := nil;
  48. Pred := Tec;
  49. While not(Eof(F1)) do begin
  50. New(Tec);
  51. Read(f1,Tec^.Name);
  52. Sort(Root,Tec,nil);
  53. end;
  54. close(f1);
  55. end;
  56. {==========================================}
  57. {==========================================} {p2}
  58. Procedure OuttoFils(Root : pty);
  59. begin
  60. Assign(F2,Out1);
  61. ReWrite(f2);
  62. {write to files}
  63. while root<>nil do Begin
  64. Write(f2,Root^.name);
  65. root := root^.next;
  66. end;
  67. close(f2);
  68. end;
  69. {==========================================}
  70. Procedure P3(Var Root1,Root2,NewRoot : pty); {p3}
  71. var
  72. Tec,Sled : Pty;
  73. begin
  74. NewRoot := Root1;
  75. Tec := Root1^.next;
  76. While Tec^.next <> nil do begin
  77. Tec := Tec^.next;
  78. end;
  79. Tec^.next := Root2;
  80. Tec := Root1;
  81. Sled := Root1^.next;
  82. While Sled <> nil do begin
  83. If Tec^.name > Sled^.name Then begin
  84. Tec^.next := Sled^.next;
  85. Sort(Root1,Sled,Sled^.next);
  86. end;
  87. Tec := Sled;
  88. Sled :=Sled^.next;
  89. end;
  90. end;
  91. {==========================================}
  92. begin
  93. ReadM(Root1,inp1);
  94. ReadM(Root2,inp2);
  95. P3(Root1,Root2,NRoot);
  96. OuttoFils(NRoot);
  97. end.