最后一个文本的辅音

时间:2015-06-05 15:50:12

标签: c++

用户输入文本(带空格)后,如何仅删除该特定文本的最后一个辅音?

我不知道怎么做,无论我现在做了什么都删掉了所有的辅音。

1 个答案:

答案 0 :(得分:0)

你有没有尝试过或者你不知道怎么做?

我假设你还没有做任何事情。

首先,你必须找到最后一个辅音。你是怎样做的。好吧,你从结尾开始,检查字母,直到你找到一个辅音。 现在,当你找到最后一个辅音时,你会记住辅音的位置,然后将辅音右边的每个字母移到左边。 最后,将字符串中的最后一个字符更改为' \ 0'。

以下是代码:

#include <iostream>
#include <string>
#include <cctype>

bool isConsonant(char);

int main (int argc, char *argv[]) {
    char s[80];

    // Input the text
    std::cout << "Enter the text: ";
    std::cin.getline(s,80,'\n');

    // Creating string object
    std::string text(s);
    int length = text.length();

    // Searching for the last consonant
    int i = length - 1;
    while ((!isConsonant(text.at(i)) && (i)))
        i--;

    // Moving every letter after the last consonant one place to the left
    for (int j = i; j < length - 1; j++)
        text.at(j) = text.at(j+1);
    text.at(length-1) = '\0';

    // Printing the text to the standard output
    std::cout << text;
    return 0;
}

bool isConsonant(char c) {
    if (isalpha(c)) {   
        char temp = c;
        if (isupper(c))
            temp = tolower(c);
        return !((temp == 'a') || (temp == 'e') || (temp == 'i') || (temp == 'o') || (temp == 'u'));
    }
    return false;
}

编辑:当然还有其他方法可以做到这一点,你应该试着想一想。这是我想到的第一件事。