текстовые файлы

  • Автор темы Frogs2009
  • Дата начала
F

Frogs2009

Дан файл, содержащий текст на русском языке. Определить, сколько раз встречается в нем самое длинное слово.
алгоритм:
1. Открываем файл [Assign(), ReSet() ]
2. Читаем его While Not Eof(File) Do ReadLn(File,S);
3. Каждую прочитанную строчку (S) разбиваем на слова. Можно даже внутри предыдущего цикла. Критерием разбива наверное будет служить пробельный символ ' ' (#32)
4. Каждое получившееся слово сохраняем для дальнейшей работы с ним, но предварительно ищим в уже "существующих" (сохраненных ранее) словах на предмет его уже "встречаемости", ну что б не повтиряться. И если совпадение было найдено - увеличиваем счетчик для этого слова на 1. Если же нет - то сохраняем в новой ячейке.
5. После выхода из цикла (пункт 2) мы достигнем конца файла, заодно будем иметь список слов, которые были в файле с указанием их количества. Осталось только выяснить какое из них самое длинное.
6. Для этого используем обычный цикл
For I:=1 To Скока-там-слов-насчиталось Do
If Length(Текущее_слово)>Max_length Then Begin
Max_length:=Length(Текущее_слово);
Номер-Самого-Длинного-Слова := I
End

7. После этого у нас все есть - номер самого длинного слова, само слово, и количество его повторений.
8. закрываем файл, и выводим результат на экран.
помогите составить программу, алгоритм сделал, а на составление мозгов не хватает, заранее спасибо!!
 
A

astronom

А не легче сразу при считывании каждого отдельного слова, выяснять, является ли оно самым длинным? Просто запоминать сразу все слова текстового файла в памяти - это как-то прожорливо получается для ресурсов. :)
Например так:
1. Считать слово.
2. Определить длину слова.
3. Если это слово длиннее ранее запомненного (т.е. того, которое ранее считалось самым длинным), то сбросить счетчик до единицы, запомнить текущее слово, как самое длинное, запомнить его длину.
Иначе, если длины слов совпадают, то проверить слова на соответствие друг другу. Если слова совпадают, увеличить счетчик, если нет - создать новый, для второго слова. Иначе, перейти к следующему слову.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!