Дан файл, содержащий текст на русском языке.Составить в алфавитном порядке список всех слов, встречающихся в этом тексте - 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 до [B]count[/B] выполняется действие:
- [B]count[/B] - это количество элементов в массиве name
- writeln(name[i]) - выводит на экран значение name[i]
- Переменная [B]name[/B] представляет собой массив (или список) имен
- [B]count[/B] - это переменная, содержащая количество элементов в массиве name
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д