Advertisement
Guest User

Untitled

a guest
Dec 27th, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.12 KB | None | 0 0
  1. program Lab3;
  2.  
  3. uses
  4. crt;
  5.  
  6. const
  7. FILE1 = 'C:\Users\user\Desktop\Lab3\fname1.txt';
  8. FILE2 = 'C:\Users\user\Desktop\Lab3\fname2.txt';
  9.  
  10. procedure About;
  11. begin
  12. writeln('Л***');
  13. writeln('В***');
  14. writeln;
  15.  
  16. writeln('Г***');
  17. writeln('К***');
  18. writeln;
  19.  
  20. writeln('Задание.');
  21. writeln('Требуется написать программу, которая для каждой строки исходного файла');
  22. writeln('будет выводить в результирующий файл последовательность цифр из входной');
  23. writeln('последовательности в порядке увеличения частоты их встречаемости.');
  24. writeln('Примечание.');
  25. writeln('* Каждая цифра при этом должна быть распечатана один раз.');
  26. writeln('* Если какие-то цифры встречаются одинаковое число раз,');
  27. writeln('то они выводятся по возрастанию.');
  28. writeln('Например.');
  29. writeln('Пусть в одной из строк исходного файла содержатся следующие символы:');
  30. writeln('123**24#32');
  31. writeln('В результирующем файле должно быть:');
  32. writeln('1432');
  33. end;
  34.  
  35. procedure Alg;
  36. var
  37. s: String;
  38. b, c: array [0..9] of Integer;
  39. i, p, q, t: Integer;
  40. begin
  41. while not EoF do
  42. begin
  43. ReadLn(s);
  44. for i := 0 to 9 do b[i] := i;
  45. for i := 0 to 9 do c[i] := 0;
  46. for i := 1 to Length(s) do
  47. if s[i] in ['0'..'9'] then Inc(c[Ord(s[i]) - Ord('0')]);
  48. q := High(b);
  49. repeat
  50. p := q;q := 0;
  51. for i := 0 to p - 1 do
  52. if (c[i + 1] < c[i]) or (c[i + 1] = c[i]) and (b[i + 1] < b[i]) then begin
  53. q := i;
  54. t := b[i];b[i] := b[i + 1];b[i + 1] := t;
  55. t := c[i];c[i] := c[i + 1];c[i + 1] := t;
  56. end;
  57. until q = 0;
  58. for i := 0 to 9 do if c[i] <> 0 then Write(b[i]);WriteLn;
  59. end;
  60. end;
  61.  
  62. procedure FileToFile(var f1, f2: text);
  63. var
  64. s, t: string;
  65. begin
  66. reset(f1); rewrite(f2);// открываем файл 1, перезаписываем файл 2
  67. while not eof(f1) do // подсчитываем кол-во символов
  68. begin
  69. readln(f1, s);
  70. t := s;
  71. Alg;
  72. writeln(f2, t);
  73. end;
  74. end;
  75.  
  76. procedure FileNew(var fname1, fname2: string; f1, f2: text);
  77. begin
  78. writeln('Введите имя исходного файла:'); // fname1.txt
  79. readln(fname1);
  80. fname1 := FILE1;
  81. if FileExists(fname1) then
  82. begin
  83. writeln('Введите имя результирующего файла'); // fname2.txt
  84. readln(fname2);
  85. fname2 := FILE2;
  86. assign(f1, fname1);assign(f2, fname2);
  87. FileToFile(f1, f2);
  88. end
  89. else writeln('Файл с таким именем не существует.');
  90. close(f1);close(f2); // закрываем файл
  91. readln;
  92. end;
  93.  
  94. var
  95. fname1, fname2: string;
  96. f1, f2: text;
  97.  
  98. begin
  99. About;
  100. FileNew(fname1, fname2, f1, f2);
  101. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement