найти слова которое начинается с согласной буквы в массиве символов

187
17 ноября 2021, 14:30
 include <iostream>
 #include <string>
 #include <vector>
 #include <cctype>
 #include <iterator>
 using namespace std;

 int main()
 {
     int gl_i = 0;
     char ppp = 0;
     char ch[10];
     char chb[10];
     cin.getline(ch, 10);
     for (int i = 0; i < 10; i++)
     {
         if ((((ch[i] > 65) && (ch[i] < 90)) && ((ch[i]!=69) && (ch[i] != 73) && (ch[i] != 79) && (ch[i] != 85) && (ch[i] != 89))) || (((ch[i] > 97) && (ch[i] < 122)) && ((ch[i] != 101) && (ch[i] != 105) && (ch[i] != 111) && (ch[i] != 117) && (ch[i] != 121)))) 
         {
             for (int i = 0; i < 10; i++)
             {
                 if (((ch[i] > 64)&&(ch[i] < 91))||((ch[i] > 98) && (ch[i] < 123))) {
                     ch[i] = chb[gl_i];
                     gl_i++;
                 }
                 else {
                 //  chb[i] = ppp;
                     break;
                     gl_i++;
                 }
             }
         }
     }
     for (int i = 0; i < 10; i++) {
         cout << chb[i];
     }
     return 0;
 }

Код сверху должен находить слова которое начинается с согласной буквы и записывать их в массив,но при попытке вызвать выводит только первый результат. if 'ы проводят проверку на то на какой символ сейчас смотрит цикл,первый находить все гласные буквы,второй останавливает первый если будет любой другой символ кроме букв

Answer 1
#include <iostream>
#include <vector>
using namespace std;
int main() {
    string s;
    getline(cin, s);
    s += " ";
    // Гласные буквы
    string a = "aeoui";
    vector <string> words;
    string word = "";
    for(int i=0; i < (int)s.size(); i++) {
        // Если (это конец слова И размер слова не равен 0)
        if(s[i] == ' ' && word.size()) {
            // Если первая буква слова не гласная
            bool isOK = ( (int)a.find(word[0]) == -1 );
            if(isOK)
                { words.push_back(word); }
            word = "";
        }
        if(isalpha(s[i])) {
            word += s[i];
        }
    }
    // Вывести все слова
    for(auto el : words)
        cout << el << " ";
    return 0;
}
READ ALSO
Проблемы с работой GUI в Astra Linux

Проблемы с работой GUI в Astra Linux

Есть класс унаследованный от QMainWindow, в нем устанавливаю два QDockWidget и центральный виджет:

109
C++, определение виртуального деструктора в заголовочном файле

C++, определение виртуального деструктора в заголовочном файле

У меня есть вопрос по поводу определения виртуального деструктора в заголовочном файле

162
C++, препроцессор, условная компиляция и ODR

C++, препроцессор, условная компиляция и ODR

Я провожу небольшое исследование существующих способов нарушить ODR (Правило Единого Определения) при использовании inline, и меня интересует...

158
Решить задачу с помощью рекуррентного соотношения, алгоритмы (С++)

Решить задачу с помощью рекуррентного соотношения, алгоритмы (С++)

Назовём число счастливым, если оно делится на k и сумма его цифр лежит в интервале [p, q]Нужно подсчитать, сколько счастливых чисел лежат в интервале...

129