Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.19 KB | None | 0 0
  1. rogram laba3;
  2.  
  3. uses
  4. crt;
  5.  
  6. const
  7. Symb = ['a'..'z'];
  8.  
  9. type
  10. mas = array['a'..'z'] of integer;
  11.  
  12. procedure About;
  13. begin
  14. Writeln('Лабораторная работа №3.');
  15. Writeln('Вариант №14.');
  16. Writeln('Выполнил: Луника Иван Дмитриевич. Студент группы: 6102');
  17. Writeln('Условие: В исходном текстовом файле записаны строки, содержащие');
  18. Writeln('текст на английском языке. Требуется написать программу, которая');
  19. Writeln('для каждой строки исходного файла будет определять и выводить');
  20. Writeln('результирующий файл буквы, встречающиеся в этой строке в порядке');
  21. Writeln('уменьшения частоты их встречаемости. Строчные и прописные буквы');
  22. Writeln('при этом считаются не различными. Каждая буква, которая встречается');
  23. Writeln('в тексте, должна быть выведена ровно 1 раз. Если какие-то буквы');
  24. Writeln('встречаются одинаковое кол-во раз, то они выводятся в алфавитном');
  25. Writeln('порядке.');
  26. end;
  27.  
  28. function Mass(s: string; var a: mas): string;
  29. var
  30. max, i: integer;
  31. res: string;
  32. c: char;
  33. begin
  34.   res := ''; {зануляем строку}
  35.     for c := 'a' to 'z' do a[c] := 0;{зануляем массив}
  36.  
  37.       for i := 1 to length(s) do {является ли число символом}
  38.       if (Lowercase(s[i]) in Symb) then a[Lowercase(s[i])] := a[Lowercase(s[i])] + 1;
  39.  
  40.         max := a['a']; {условным максимумом считаем первый эл-т массива}
  41.           for c := 'a' to 'z' do
  42.           if (a[c] > max) then max := a[c]; {поиск максимума}
  43.             while (max > 0) do {выписываем все символы в порядке уменьшения частоты их встречаемости}
  44.               begin
  45.               for c := 'a' to 'z' do
  46.               if (a[c] = max) then res := res + c; {сравнивыем символ с максимумом}
  47.                 max := max - 1;
  48.               end;
  49. result := res;
  50. end;
  51.  
  52. procedure Alg(var f1, f2: text);
  53. var
  54. s, res: string;
  55. a: mas;
  56. begin
  57.   reset(f1);
  58.   rewrite(f2);
  59.     while not eof(f1) do
  60.      begin
  61.      readln(f1, s);
  62.       if s <> '' then {если строка из файла неравна нулевой}
  63.         res := Mass(s, a)
  64.       else res := ' ';
  65.         writeln(f2, res);
  66.     end;
  67. close(f1);
  68. close(f2);
  69. end;
  70.  
  71. var
  72. f1, f2: text;
  73. fn1, fn2: string;
  74.  
  75. begin
  76. About;
  77. write('Введите имя исходного файла: ');
  78. readln(fn1);
  79. if FileExists(fn1) then begin
  80. write('Введите имя результирующего файла: ');
  81. readln(fn2);
  82. assign(f1, fn1);
  83. assign(f2, fn2);
  84. Alg(f1, f2);
  85. end
  86. else writeln('Файл не существует');
  87.  
  88. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement