Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сосчитать кол-во слов, в строке 
:(
    Опции темы
Fixin
Дата 4.12.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Вот, совсем по-детски:
Код
#include <string.h>

void main()
{
    char stroka[] = "считаем считаем neschitaem";
    char bukvi[] = "ёуеыаоэяию"; // сдесь будем хранить буквы, 
            //которые входят в нужные слова (тут только маленькие)
    int dlina = strlen(stroka); // получаем длину строки
    int kol_vo_slov = 0;
    int flag_podhodit = 0; // если в слове встречаем нужную букву - 
            //ставим этот флаг = 1
    for (int i = 0; i <= dlina; i++)
    {
        if (!flag_podhodit) // если флаг еще не установлен
            for (int j = 0; j < strlen(bukvi); j++)
                if (stroka[i] == bukvi[j]) // и текущая буква в перечне искомых
                    flag_podhodit = 1; // то текущее слово подходит
        
        if ((stroka[i] == ' ')||(stroka[i] == 0)) // если пробел или конец строки - слову конец
            if (flag_podhodit) // и если для кончившегося слова стоит флаг
            {
                kol_vo_slov++; // кол-во слов увеличиваем
                flag_podhodit = 0; // а флаг снимаем, тк переходим к следующему слову
            }
    }
}

PM MAIL ICQ   Вверх
blackofe
Дата 5.12.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 29.11.2005

Репутация: 4
Всего: 4



Цитата(Doc_d0s @ 3.12.2005, 16:15)
число пробелов(разделителей)+1

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

или наоборот - слова разделены только запятой без пробела?
PM MAIL   Вверх
_hunter
Дата 6.12.2005, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



тогда предварительно пройдись по тексту ( возможно несколько раз ) и удали все двойные пробелы


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
nikitao
Дата 6.12.2005, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Так а если там смайлики между словами написаны.Решение через пробелы -это схалявить.Тут как-то иначе.Разделитялями являются все символы кроме букв латинского и русского алфавита т е это не только пробелы,точки,запятые...Я бы сделал так:
Посимвольно шел по тексту,если встречается знак-разделитель,а предыдущий зна -это знак-неразделитель(для этого надо переменную типа bool обьявить),то увеличеваем счетчик на один.Так до канца.При этои символ '\0' будем тоже считать разделителем.Проблем как всегда в кодировке.Под латиницу писать от силы 20 минут(ИМХО),хотя это может только казаться.


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
TeeT
Дата 6.12.2005, 17:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Без указателей нельзя, а вот без функции strtok можно, с помощью sscanf, только вот труднее получится,
smile а про NULL на русском языке в ХЭЛПЕ написано:

Description

Null pointer constant that is compatible with any data object pointer. It is not compatible with function pointers. When a pointer is equivalent to NULL it is guaranteed not to point to any data object defined within the program.

А в принципе на Си все можно сделать smile
  Вверх
nikitao
Дата 6.12.2005, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата(TeeT @ 6.12.2005, 18:58)
а про NULL на русском языке в ХЭЛПЕ написано

А кто сказал ,что с NULL('\0') какие-то проблемы???



--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
blackofe
Дата 6.12.2005, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 29.11.2005

Репутация: 4
Всего: 4



Цитата(nikitao @ 6.12.2005, 12:09)
Проблем как всегда в кодировке.Под латиницу писать от силы 20 минут(ИМХО),хотя это может только казаться.

ну, какие же проблемы в кодировке? пользуйте locale, и будет вам щастье! ;)
Добавлено @ 19:10
Цитата(_hunter @ 6.12.2005, 11:50)
тогда предварительно пройдись по тексту ( возможно несколько раз ) и удали все двойные пробелы

а еще подровнять абзацы, проверить орфографию и раскрасть шрифты всеми цветами радуги. smile

сорри. smile

Это сообщение отредактировал(а) blackofe - 6.12.2005, 19:08
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.