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

Поиск:

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


Шустрый
*


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

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



Помогите с задачей (код желательно на Си):
"В символьной строке сосчитать число слов, содержащих гласные буквы"
Заранее всем благодарен!!! smile

М
 
Переименован заголовок на более подходящий.
Постарайтесь давать теме внятное название.

--------------------
PM MAIL ICQ   Вверх
_hunter
Дата 29.11.2005, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



не вопрос -- поможем.
что именно тебе не понятно?


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


Шустрый
*


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

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



Я не знаю как написать сам цикл обработки строки.
У меня в книге по Си про строковые массивы очень мало написано.
Кто подскажет хорошую ссылочку по этой теме?
--------------------
PM MAIL ICQ   Вверх
azesmcar
Дата 30.11.2005, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Слово это то что разделено пробелом. Т.е. разбиваешь строку с разделителем " ", потом начинаешь считать циклом...строку разбивай на слова фунцкией strtok.

Как делать смотри здесь
www.cplusplus.com/ref/cstring/strtok.html
потом вызываешь свою функцию например glasniy_simvol_exists(const char *p) которая возвращяет true если гласные в слове есть и false соотвественно если их нет..
И считаешь..вроде все остальное дело техники
PM   Вверх
Weman
Дата 30.11.2005, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Попробую сделать. ОГРОМНОЕ СПАСИБО!!!
--------------------
PM MAIL ICQ   Вверх
azesmcar
Дата 1.12.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Будут вопросы стучи в ICQ. 173549200
PM   Вверх
Weman
Дата 1.12.2005, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У меня вопрос. Можно ли разбить строку также как функцией strtok, только с помощью цикла?
Если можно, то выложите пожалуйста код на Си.

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


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

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



Вот, выложил. Но не проверял smile

Код

// szLine содержит анализируемую строку
// можно предварительно конвертировать строку в нижний или верхний регистр
// еще по идее надо учитывать что могут встречаться разные кодировки для русского языка - Windows-1251, KOI-8R, MAC, ISO, IBM (DOS)


char* ptr, *ptok;
int size, cnt=0;    // счетчик слов

ptr=szLine;         // указатель в начале строки

do {                     // начали цикл
ptok=strtok(ptr," ");                             // ищем пробел
if (ptok==NULL) ptok=ptr+strlen(ptr);  // нет пробела- это единственное (или последнее) слово
size=ptok-ptr;                                      // длина слова

  if (myCheckWord(ptr, size)==TRUE) cnt++;   // если нашли гласную то увеличить счетчик на 1
  ptr+=(size+1);                                   // передвинуть указатель на начало следующего слова
} while (ptr<szLine+strlen(szLine));   //  делать пока указатель не дошел до конца строки



 
BOOL myCheckWord(char* ptr, int size)
{
char* searchptr=ptr;           // указатель на начале слова
char ch;
BOOL bResult=FALSE;

while (searchptr<ptr+size) {  // перемещаем указатель по слову
  ch=*searchptr++;                // берем значение по указателю с автоинкрементом
  if (ch=='а' || ch=='е' || ch=='и' || ch=='й' || ch=='о' || ch=='у' || ch=='э' || ch=='ю' || ch=='я') {
      bResult=TRUE; break; }  // если это гласная то устанавливаем флаг и выходим из цикла 
}
return bResult;    // возвращаем флаг (TRUE- нашли гласную, FALSE- не нашли)
}


Это сообщение отредактировал(а) Aleksandor - 3.12.2005, 23:39


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
blackofe
Дата 1.12.2005, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Aleksandor
не по существу вопроса: 'й' - не гласная буква. но зато к гласным относятся еще 'ы' и 'ё'. smile
PM MAIL   Вверх
Aleksandor
Дата 1.12.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

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



А у меня на клаве нет ё (вставил из буфера smile ) про Ы забыл, а вот про й думал что гласная smile


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Weman
Дата 3.12.2005, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо. Попробую этот вариант.
--------------------
PM MAIL ICQ   Вверх
Doc_d0s
Дата 3.12.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



число пробелов(разделителей)+1
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
Weman
Дата 3.12.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А можно ли код программы, который написал Aleksandor написать какнибудь попроще для новичков и с объяснением назначения каждой вызываемой функции?
Помогите новичку разобраться. Спасибо.

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


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


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

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



Weman.может перечислишь,какие ф-ции не понятны,а то код в себе не использует никаких сверх секретных ф-ций(если конечно число таких ф-ций не стримится к бесконечности),а после этого и как прога работает станет понятно smile


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


Шустрый
*


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

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



1)Возможно ли написать эту прогу без использования указателей?
2)Можно ли написать код без функции strtok();
3)Что такое NULL, strlen(szLine)
4)Какого szLine типа?
5)Можно ли сделать, чтобы программа искала английские буквы, а не русские?
--------------------
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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