Задана строка. Напечатать слова строки, которые начинаются с гласной буквы и указать их...

0 голосов
125 просмотров

Задана строка. Напечатать слова строки, которые начинаются с гласной буквы и указать их количество. С++


Информатика (169 баллов) | 125 просмотров
0

Слова в этой строке - русские или английские?

0

Думаю, английские подойдут, благодарю

Дан 1 ответ
0 голосов
Правильный ответ

#include
#include
#include

using namespace std;


class FindVowelWords{
    vector input;  // тут будут лежать слова для обработки
    vector output; // тут будут лежать обработанные слова
    vector vowels;  // а тут глассные буквы

public:
    // ...
    FindVowelWords(const string& inputStr){
        vowels = {'a', 'A', 'o', 'O', 'i', 'I', 'u', 'U', 'e', 'E'}; // определяем вектор с гласнымы
        boost::split(input, inputStr, [](char c){return c == ' ';}); // разбиваем воходную строку на слова
    }

    // поиск слов, которые начинаются с гласных
    void handle(){
        for(auto const& word : input){ // проходимся по всем словам
            for(auto const& vowel : vowels){ // проходимся по всем гласным
                if(word.at(0) == vowel){
                    output.push_back(word); // если первая буква слова - гласная, то заносим слово в результирующий вектор
                }
            }
        }
    }

    // вывод результата
    void printOutput() const{
        for(auto const& item : output){
            cout << item << endl;<br>        }
    }
    // вывод входных данных
    void printInput(){
        for(auto const& item : input){
            cout << item << ' ';<br>        }
    }

    int getOutputSize(){
        return output.size();
    }

};


int main(){
    string test = "Don't be arfraid, just try to understand this code and you'll be a good programmer!";
    FindVowelWords findIt(test);
    cout << "You have entered this string: " << endl;<br>    findIt.printInput();
    cout << endl << endl;<br>
    findIt.handle();
    cout << "Words that begin with a vowel: " << endl;<br>    findIt.printOutput();
    cout << endl;<br>    cout << "number of words have been found: " << findIt.getOutputSize() << endl;<br>    return 0;
}


image
(282 баллов)
0

добавил пример вывода. Если есть вопросы, то постараюсь подсказать

0

не подскажете, почему С++ Builder ругается на последнюю библиотеку?

0

Библиотека Boost не входит в набор стандартных, поэтому ее надо ставить отдельно

0

Ее можно скачать с офф сайта, а потом скомпилировать. Однако вам может подойти другой вариант (вбивайте в ютубе эту строчку - Installing and Using the C++ Boost Library in C++Builder), там это делается в пару кликов.

0

Спасибо большое