@julzflo

Как удалить слово из строки начинающие на согласные?

Дана строка - "Все не так уж важно"
Удалить из строки слова, начинающиеся на согласные буквы.
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ответы на вопрос 3
@kalsc12345
Неизвестный человек.
#include <iostream>
#include <cstring>
#include <cctype>

using namespace std;

int main()
{
    char str[] = "Все не так уж важно";
    char *token = strtok(str, " ");
    char new_str[100] = "";
    while (token != NULL)
    {
        if (isalpha(token[0]) && !strchr("aeiouyAEIOUY", token[0]))
        {
            // слово начинается на согласную букву
        }
        else
        {
            // слово начинается на гласную букву
            strcat(new_str, token);
            strcat(new_str, " ");
        }
        token = strtok(NULL, " ");
    }
    cout << new_str << endl;
    return 0;
}

Все говорят почему пишешь код просто так.
Я говорю сам был человеком который не разбирался в этом.
Ответ написан
@dima20155
you don't choose c++. It chooses you
Создайте массив со всеми согласными. Двигайтесь по строке: когда встретили пробельный символ проверьте следующий символ. Если символ - согласная буква - слово пропускаем, если гласная, двигаясь до следующего пробельного символа сохраняем буквы в результирующую строку
Ответ написан
RabraBabr
@RabraBabr
Такое пойдет?

#include <iomanip>
#include <iostream>
#include <string>
#include <vector>

std::string remove_word_by_first(const std::string s, const std::string first)
{
    std::string::size_type n;
    std::string::size_type e;
    std::string result=" ";
    result+=s;
    
    while ((n = result.find(first)) != std::string::npos)
    {
        e = result.find(" ", n+1);
        result.replace(n, e-n, "");
    }
    result.erase(0,1);
    return result;
}

int main()
{
    const std::string example = "you can build shelves for every room in your home and custom-make them after your needs";

    std::vector<std::string> key_list;
    key_list.push_back(" a");
    key_list.push_back(" e");
    key_list.push_back(" i");
    key_list.push_back(" o");
    key_list.push_back(" u");
    key_list.push_back(" y");
    
    std::string s = example;
    for (auto a: key_list)
    {
        s = remove_word_by_first(s, a);
    }
    std::cout << s <<std::endl;
    
    return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы