Не пойму как нужно правильно сделать? Паскаль
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Всем привет!
Вот такая задача:
Дан текстовый файл f. Состоящий из строк. Найти самое длинное слово среди слов, вторая буква которых есть e; если слов с наибольшей длинной несколько, то найти последнее. Если таких слов нет вообще, то сообщить об этом. Решить эту задачу без ограничения на число символов в слове.
все бы ничего, но проблема в том что стоит условие, в котором я затрудняюсь... не могу представить как так можно сделать?
Вот такая задача:
Дан текстовый файл f. Состоящий из строк. Найти самое длинное слово среди слов, вторая буква которых есть e; если слов с наибольшей длинной несколько, то найти последнее. Если таких слов нет вообще, то сообщить об этом. Решить эту задачу без ограничения на число символов в слове.
все бы ничего, но проблема в том что стоит условие, в котором я затрудняюсь... не могу представить как так можно сделать?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

Считываешь строку из файла, через нахождение пробелов отделяешь одно слово от другого. Эти слова можно в массив скинуть, а потом проверять длину каждой строки и проверять наличие второй буквы 'е'. Как только находишь какое-нибудь слово со второй 'е', то в переменную, куда будешь записывать результат, пишешь это слово и в числовую переменную длину слова. Как только находишь следующее подходящее слово, то сравниваешь длину, если больше - переприсваиваешь.
А чем условие смущает?
А чем условие смущает?
Ну, я так думаю, в строке может быть больше 255 символов. А это для Паскаля бяка.
Можно все проще:
1. Читаем первые два символа от курсора.
2. Если 2 символ - "е", то скидываем эти два символа в массив чаров и дальше считываем по одному символу и скидываем в тот же массив, пока не дойдем до разделителя (пробела, точки, запятой и т.д.)
2'. Если 2 символ - не "е", то пропускаем все символы до разделителя включительно.
3. Пропускаем все разделители (кто знает, вдруг там много пробелов понатыкано). Если 2 символ был не "е" - переходим на шаг 1.
4. Сохраняем буквенный массив и его длину в переменных, если эта длина больше длины, полученной на предыдущем шаге.
5. Возвращаемся к шагу 1.
Схемка кривовата, но в общем работает.
Можно все проще:
1. Читаем первые два символа от курсора.
2. Если 2 символ - "е", то скидываем эти два символа в массив чаров и дальше считываем по одному символу и скидываем в тот же массив, пока не дойдем до разделителя (пробела, точки, запятой и т.д.)
2'. Если 2 символ - не "е", то пропускаем все символы до разделителя включительно.
3. Пропускаем все разделители (кто знает, вдруг там много пробелов понатыкано). Если 2 символ был не "е" - переходим на шаг 1.
4. Сохраняем буквенный массив и его длину в переменных, если эта длина больше длины, полученной на предыдущем шаге.
5. Возвращаемся к шагу 1.
Схемка кривовата, но в общем работает.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
[quote="""]Ну, я так думаю, в строке может быть больше 255 символов. А это для Паскаля бяка.
[quote]
И где бяка.. WideString есть можно написать что-то типа этого WideString[1000] должно хватить..
А вообще все зависит от реализации, я бы загнал содержимое куда-нить а потом бы работал с ним..
[quote]
И где бяка.. WideString есть можно написать что-то типа этого WideString[1000] должно хватить..
А вообще все зависит от реализации, я бы загнал содержимое куда-нить а потом бы работал с ним..
А знаки препинания (запятые, тире) в тексте могут быть?Считываешь строку из файла, через нахождение пробелов отделяешь одно слово от другого. ...
Если да, то прочше анализировать "от противного". Т.е. не "если пробел - то это разделитель", а "если не буква - то это разделитель"
"если не буква - то это разделитель"
А если слово двусложное? Например, "кое-что" - это ведь одно слово, а не два.
А если слово двусложное? Например, "кое-что" - это ведь одно слово, а не два.
Вот как раз не уверен.ПН... писал(а):"если не буква - то это разделитель"
А если слово двусложное? Например, "кое-что" - это ведь одно слово, а не два.
Опять же - что считать разделителем. Апостроф, например? Есть же д'Артаньян
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Спец символы проще всего к примеру ^ , я не видел что бы его на письме использовали или 2 знака являются разделителем итд
Любое множество символов до пробела - есть слово. Может и не русское, просто оно НАМ не понятно. Давайте тогда уж еще и словарь подключим - будем выяснять, что являеться словом, а что нет. С точки зрения авторов задачи, я думаю, они не ставили цель позаботиться о существовании исходных слов
It's a long way to the top if you wanna rock'n'roll