Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2013, 23:41   #1
metagalaxy
 
Регистрация: 08.07.2013
Сообщений: 4
По умолчанию Подсчет количества слов, начинающихся с гласных, согласных, иных символов

Нужно написать программу, которая читает по одному слову за РАЗ, т.е. при вводе слова она анализирует с какой буквы оно начинается с гласной или согласной и увеличивает соответствующее значение счетчика, если программа читает цифры, либо другие символы отличные от букв программа должна увеличить другую переменную. При всем этом оно должно не просто 1 слово прочитать, а всю строку и каждое слово в нем(последовательность символом, разделенных пробельными символами) проанализировать таким образом.
Код:
#include <iostream>
#include <conio.h>
#include <cctype>
 
int main()
{
    using std::cin;
    using std::cout;
    int count_vow = 0;
    int count_cons = 0;
    int count_o = 0;
    char ch;
    cout << "Enter words (q to quit):\n";
    cin >> ch;
    while (ch != 'q') 
    {
    if (isalpha(ch))
         {
 switch (ch)
                 {
                        case 'a' :
                        case 'A' : 
                        case 'e' :
                        case 'E' : 
                        case 'i' :
                        case 'I' : 
                        case 'o' :
                        case 'O' :
                        case 'u' :
                        case 'U' : count_vow++;
                                   break;
                        default : count_cons++;
                 }
         }
          else  
               count_o++;
          cin >> ch;
    }
    cout << count_vow << " words beginning with vowels\n"
         << count_cons << " words beginning with consonants\n"
         << count_o << " others.";
         getch();
         return 0;
}

Последний раз редактировалось metagalaxy; 13.07.2013 в 02:32.
metagalaxy вне форума Ответить с цитированием
Старый 13.07.2013, 00:22   #2
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Код:
#include <iostream>
#include <ctype.h>
using std::cout;
using std::cin;




int main(void)
{
     int count_vow  = 0;
     int count_cons = 0;
     int count_o    = 0;

     int ch;
     while((ch = cin.get()) != EOF) {
            if(ch == '\n')
                   break;

            if(isalpha(ch)) {
                   if(strchr("aAeEiIoOuU", ch))
                           count_vow++;
                   else
                           count_cons++;
                   while(isalpha(ch = cin.get()));
                   cin.unget();
            } else
                  count_o++;
      }

      cout << count_vow << " words beginning with vowels\n"
             << count_cons << " words beginning with consonants\n"
             << count_o << " others.";

      cin.get();
      return 0;
}
Nuklon вне форума Ответить с цитированием
Старый 13.07.2013, 02:41   #3
metagalaxy
 
Регистрация: 08.07.2013
Сообщений: 4
По умолчанию

Пример ввода:
Код:
Вводите слова (q - для выхода):
The 12 awesome oxen ambled
quietly across 15 meters of lawn. q
5 слов начинаются с гласных.
4 слова начинаются с согласных.
2 остальных.
Nuklon, правильное значение выдает только у гласных.
metagalaxy вне форума Ответить с цитированием
Старый 13.07.2013, 11:47   #4
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Можно подправить алгоритм от Nuklon. В strchr(char*) идет проверка только на гласные. Если соответствия не найдено переходим к функции strchr(char*), но, уже с проверкой на согласные. Снова не подходит? Проверяем на цифры.

ИЛИ

Заведите массив вроде: char vowels[] = {'A', 'a'.. и так далее} - для гласных.
И еще массив с согласными, цифрами и т.д.
При каждом вводе слова берете первый символ и проходите по массиву для проверки соответствия.

Не top алгоритм, но все же...

Последний раз редактировалось Igor95; 13.07.2013 в 11:54.
Igor95 вне форума Ответить с цитированием
Старый 13.07.2013, 14:35   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Я, погляжу, кекие вы выверты ещё с языками, зделаете...
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества слов Driver_09 Помощь студентам 2 24.10.2010 17:14
Подсчет: слов и количества символов (C#) freddykruger Помощь студентам 9 28.04.2010 11:29
посчет в тексте кол-во слов, гласных и согласных букв DiabloRVK Помощь студентам 4 01.12.2008 14:23
Удаление гласных, согласных, цифровых символов в строке <zeroql> Паскаль, Turbo Pascal, PascalABC.NET 9 27.11.2008 08:05