| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Pascal] Нахождение самого длинного слова |
| Автор: Frogs2009 19.6.2008, 12:51 |
| Дан файл, содержащий текст на русском языке. Определить, сколько раз встречается в нем самое длинное слово. |
| Автор: Snowy 19.6.2008, 14:00 |
| Перенесено из Pascal |
| Автор: Frogs2009 19.6.2008, 14:41 |
| эту задачу мне сказали решить в Pascal, не могли бы помочь чем нибудь? |
| Автор: THandle 20.6.2008, 01:17 | ||||
Пример файла:
Файл на любом языке подойдет, хотя на китайском |
| Автор: greenpc 20.6.2008, 09:15 |
| THandle, мне кажется что есть органичение в Вашем коде. max размер string какой? поэтому не рекомендую сливать все в одну строку |
| Автор: Frogs2009 20.6.2008, 14:22 |
| спасибо большое за программку!!!! очень благодарен! |
| Автор: Frogs2009 20.6.2008, 14:44 | ||
а откуда брать файл-то???? я не понимаю,запускаю прогу, а она пишет "Fale not found" |
| Автор: dimafeng 21.6.2008, 09:59 |
| Где exe'шник задачи, т.е. в общем случае в папку, где паскаль ) |
| Автор: Frogs2009 21.6.2008, 12:24 |
| все равно не получается! |
| Автор: dimafeng 21.6.2008, 13:58 |
| а ты в программе правильно пишешь название правила? ) |
| Автор: Frogs2009 21.6.2008, 14:59 |
| заработало!!!! вот только воожу имя файда, а он у меня выводит "1", код переписал правильно, десять раз проверял,почему он выводит только единицу???? |
| Автор: dimafeng 21.6.2008, 16:30 | ||
| Ну значит ошибка где-то... Добавлено через 5 минут и 15 секунд
Там так должно быть... |
| Автор: dimafeng 22.6.2008, 10:53 | ||
| THandle, разве не так должно быть
??? |
| Автор: Frogs2009 22.6.2008, 13:36 |
| нет,все равно единицу выводит((( блин, что делать то |
| Автор: THandle 23.6.2008, 01:39 |
Ни в коем случае... mlens - самое длинное слово в тексте. В функцию мы передаём весь текст и ищем число вхождений в него строки находящейся в mlens. Если мы передадим строку содержащую эту самое строку, то и число вхождений будет равно только единице. Так что в данном моменте в коде все правильно. В Делфи этот код выдает достоверный результат. В Паскале, из за строк может выдавать меньший. Сейчас просто чисто нет возможности поставить паскаль. Вся проблема в паскалевских строках. Надо читать каждый раз новую строку. Искать в ней самое длинное слово. Если его длина больше чем длина самого длинного слова в предыдущих строчках, то делать его более длинным. Можно два раза считывать с файла, но я сейчас напишу немного по другому. Программа будет выводить количество слов, самых длинных в файле, но не являющихся одинаковыми. Если надо будет переделать - переделаю. |
| Автор: THandle 23.6.2008, 02:44 | ||
Примитивно, но должно работать... |
| Автор: deswars 26.6.2008, 12:07 |
| Преодолеть ограничение можна. Надо считывать по словам и одновременно считать количество самого длинного слова на данный момент. |
| Автор: THandle 27.6.2008, 01:00 |
| deswars, см мой пост выше. там сделано так. Считывается одна строка, если в ней нет слова длиннее текущего самого длинного то так и оставляем, если есть, то счетчик самого длинного ставим в 1, а самое длинное становится как раз слово из новой строки. Если есть слово по длине совподающее с текущим самым длинным то увеличиваем счетчик... |
| Автор: deswars 4.7.2008, 09:25 |
| Я предлага считывать по словам, а не по строчкам Добавлено через 1 минуту и 40 секунд А можна сделать array [{...}] of char |