![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Enya |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 5.10.2005 Репутация: нет Всего: нет |
Как посчитать количество слов в файле?
Если словом нужно считать то что отделено пробелами, enterom and Tab Вот посчитать количество символов можно, но вот как посчитать слова? Кто-нибудь встречался с ткой задачей? Язык програмирования Си. ![]() -------------------- Утсанвлен Денвер 1. PHP Version 5.1.6 2. MySQL 5.0.18-max 3. phpMyAdmin 2.6.1 |
|||
|
||||
KyKy |
|
|||
![]() КуКу Профиль Группа: Участник Сообщений: 39 Регистрация: 2.1.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Думается нужно считать до того как слово кончиться, а знашь пробел это первое слово,дальше тарам пам пам - пробел,слово и т.д.
|
|||
|
||||
Бегемот |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 26.1.2005 Где: На границе Европы и Азии Репутация: нет Всего: 3 |
Enya, самый простой вариант!
|
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 1 Всего: 116 |
Бегемот,
а в файле строка:
дубликаты символов табуляции не должны подсчитываться... Если будет 10 пробелов подряд - не значит, что счетчик слов должен увеличиться на 10... Это сообщение отредактировал(а) volvo877 - 9.2.2006, 23:58 |
|||
|
||||
Бегемот |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 26.1.2005 Где: На границе Европы и Азии Репутация: нет Всего: 3 |
volvo877, понятное дело!
Я же сказал, что самый простой вариант! Простой и очень критичный к содержимому файла! Двойное и более дублирование пробелов, символов новой строки и табуляции он не видит! А ещё...А ещё, если функция fgetc не сможет прочитать из потока символ, она вернёт EOF, что может послужить причиной недосчёта! ![]() |
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Самый простой вариант, который приходит в голову, это
на
выдаёт 10. Ну или более безопасный вариант
Это сообщение отредактировал(а) Mayk - 10.2.2006, 07:58 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
надо смотреть шырше на задачу
![]() я бы сделал так
Это сообщение отредактировал(а) chaos - 10.2.2006, 15:35 |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
chaos
Тогда уж ifs >> str ![]() Но в любом случае это С++, а не Си. ps. Даже вот так ![]()
Это сообщение отредактировал(а) Mayk - 10.2.2006, 08:48 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
упс ![]() забыл убрать, сории за невнимательность и видимо по диаганали прочитал топик)) раз не заметил что на Си надо |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
вот еще один пример на этот раз на СИ(вроде как такая же идея была у KyKy)
Это сообщение отредактировал(а) chaos - 10.2.2006, 09:34 |
|||
|
||||
Enya |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 5.10.2005 Репутация: нет Всего: нет |
chaos, а можешь раъяснить принцып действия?
-------------------- Утсанвлен Денвер 1. PHP Version 5.1.6 2. MySQL 5.0.18-max 3. phpMyAdmin 2.6.1 |
|||
|
||||
ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
chaos, Mayk Прикольно, конечно,
![]() ![]() |
|||
|
||||
Enya |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 5.10.2005 Репутация: нет Всего: нет |
ManiaK, я учусь. И очень сильно тружусь. Я предполагала, что проще будет перебрать фаил и когда в переборе встречаются символы '\n' ' ' ' \t' отключать сётчик. Я так планировала. А chaos сделал судя по всему гораздо проще, было интересно узнать ход ег омыслей.
-------------------- Утсанвлен Денвер 1. PHP Version 5.1.6 2. MySQL 5.0.18-max 3. phpMyAdmin 2.6.1 |
|||
|
||||
Aleksandor |
|
|||
![]() Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 0 Всего: 12 |
Перебирая по символу в цикле-
{ если ((это первый символ И его код больше пробела) ИЛИ (код символа меньше или равен пробелу) ) уст флаг=1 передвинуть указатель на следующий символ если (код символа больше пробела И флаг==1) инкрементировать счетчик слов сбросить флаг=0 } -------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
Enya
Идея вообще такая: как только мы встретили символ код каторого меньш 33(те всякие там пробелы, переводы строк и тп дрянь) и перед этим кодом был символ(те код больше 32, определяем был ли символ или пробел через флаг fSpace) то можно сказать что кончилось слово
Это сообщение отредактировал(а) chaos - 10.2.2006, 15:29 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |