Страница 1 из 1

Не пойму как нужно правильно сделать? Паскаль

Добавлено: 14 ноя 2006, 18:33
Dr_Grizzly
Всем привет!
Вот такая задача:

Дан текстовый файл f. Состоящий из строк. Найти самое длинное слово среди слов, вторая буква которых есть e; если слов с наибольшей длинной несколько, то найти последнее. Если таких слов нет вообще, то сообщить об этом. Решить эту задачу без ограничения на число символов в слове.

все бы ничего, но проблема в том что стоит условие, в котором я затрудняюсь... не могу представить как так можно сделать?

Добавлено: 14 ноя 2006, 18:48
ПН...
Считываешь строку из файла, через нахождение пробелов отделяешь одно слово от другого. Эти слова можно в массив скинуть, а потом проверять длину каждой строки и проверять наличие второй буквы 'е'. Как только находишь какое-нибудь слово со второй 'е', то в переменную, куда будешь записывать результат, пишешь это слово и в числовую переменную длину слова. Как только находишь следующее подходящее слово, то сравниваешь длину, если больше - переприсваиваешь.
А чем условие смущает?

Добавлено: 15 ноя 2006, 02:29
Хыиуду
Ну, я так думаю, в строке может быть больше 255 символов. А это для Паскаля бяка.
Можно все проще:
1. Читаем первые два символа от курсора.
2. Если 2 символ - "е", то скидываем эти два символа в массив чаров и дальше считываем по одному символу и скидываем в тот же массив, пока не дойдем до разделителя (пробела, точки, запятой и т.д.)
2'. Если 2 символ - не "е", то пропускаем все символы до разделителя включительно.
3. Пропускаем все разделители (кто знает, вдруг там много пробелов понатыкано). Если 2 символ был не "е" - переходим на шаг 1.
4. Сохраняем буквенный массив и его длину в переменных, если эта длина больше длины, полученной на предыдущем шаге.
5. Возвращаемся к шагу 1.
Схемка кривовата, но в общем работает.

Добавлено: 15 ноя 2006, 10:39
Duncon
[quote="&quot"]Ну, я так думаю, в строке может быть больше 255 символов. А это для Паскаля бяка.
[quote]
И где бяка.. WideString есть можно написать что-то типа этого WideString[1000] должно хватить..
А вообще все зависит от реализации, я бы загнал содержимое куда-нить а потом бы работал с ним..

Добавлено: 15 ноя 2006, 13:57
BBB
Считываешь строку из файла, через нахождение пробелов отделяешь одно слово от другого. ...
А знаки препинания (запятые, тире) в тексте могут быть?
Если да, то прочше анализировать "от противного". Т.е. не "если пробел - то это разделитель", а "если не буква - то это разделитель"

Добавлено: 15 ноя 2006, 19:29
ПН...
"если не буква - то это разделитель"
А если слово двусложное? Например, "кое-что" - это ведь одно слово, а не два.

Добавлено: 16 ноя 2006, 11:11
BBB
ПН... писал(а):"если не буква - то это разделитель"
А если слово двусложное? Например, "кое-что" - это ведь одно слово, а не два.
Вот как раз не уверен.

Добавлено: 17 ноя 2006, 00:43
Хыиуду
Опять же - что считать разделителем. Апостроф, например? Есть же д'Артаньян

Добавлено: 17 ноя 2006, 10:39
Duncon
Спец символы проще всего к примеру ^ , я не видел что бы его на письме использовали или 2 знака являются разделителем итд

Добавлено: 17 ноя 2006, 11:10
somewhere
Любое множество символов до пробела - есть слово. Может и не русское, просто оно НАМ не понятно. Давайте тогда уж еще и словарь подключим - будем выяснять, что являеться словом, а что нет. С точки зрения авторов задачи, я думаю, они не ставили цель позаботиться о существовании исходных слов