Дан файл, содержащий текст на русском языке.Составить в алфавитном порядке список всех слов, встречающихся в этом тексте - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Дан файл, содержащий текст на русском языке. Cоставить в алфавитном порядке список всех слов, встречающихся в этом тексте. Логически я знаю как сделать это все. У меня есть txt файл, в нем слова в столбик на русском языке. В программе я вбиваю константу алфавита букв. Начинается процесс, просматриваю весь текст, сверяюсь с константой и выстраиваю все слова в алфавитном порядке. "НО", я нашел готовый вариант:
program p;
var f: text;
  g: file of string;
  i, j, k, max: integer;
  s, sl, s1, s2, smax: string;
function Srav(s1, s2: string): boolean;
const sr = 'АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя';
var p: boolean; i, k: integer;
begin p := false; k := length(s1); I := 1;
  if length(s2) < k then k := length(s2);
  if Pos(s1[1], sr) < Pos(s2[1], sr)
    then p := true;
  while (s1[i] = s2[i]) and (i <= k) and not (p) do
  begin if Pos(s1[i], sr) < Pos(s2[i], sr)
    then p := true;
    i := i + 1
  end;
  Srav := p;
end;
begin assign(f, 'f0.Txt'); assign(g, 'g0.txt');
  reset(f); k := 1;
  rewrite(g); sl := '';
  writeln;
  while not (eof(f)) do
  begin readln(f, s);
    for i := 1 to length(s) do
    begin if s[i] = ' ' then begin if sl <> ' '
        then begin write(g, sl);
          k := k + 1;
        end;
        sl := '';
      end
      else sl := sl + s[i];
    end;
    if sl <> ' ' then begin write(g, sl);
      k := k + 1;
    end;
    sl := '';
  end;
  close(f); close(g);
  reset(g);
  while not (eof(g)) do
  begin read(g, s);
    write(s, ' ')
  end; writeln;
  reset(g);
  for i := 0 to k - 2 do
  begin reset(g);
    seek(g, i);
    read(g, s1);
    max := i; smax := s1;
    for j := i + 1 to k - 2 do
    begin seek(g, j);
      read(g, s2);
      if srav(s2, sMAX)
        then begin max := j;
        smax := s2
      end;
    end; ;
    seek(g, i);
    write(g, smax);
    seek(g, max);
    write(g, s1);
  end;
  reset(g);
  while not (eof(g)) do
  begin read(g, s);
    write(s, ' ')
  end;
end.
А как без функции это все дело провернуть?) Можете помочь, заранее спасибо)

Решение задачи: «Дан файл, содержащий текст на русском языке.Составить в алфавитном порядке список всех слов, встречающихся в этом тексте»

textual
Листинг программы
for i:=1 to [B]count[/B] do writeln(name[i]);

Объяснение кода листинга программы

  1. В цикле от 1 до [B]count[/B] выполняется действие:
    • [B]count[/B] - это количество элементов в массиве name
    • writeln(name[i]) - выводит на экран значение name[i]
  2. Переменная [B]name[/B] представляет собой массив (или список) имен
  3. [B]count[/B] - это переменная, содержащая количество элементов в массиве name

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы