计算在两个辅音C ++之间找到的元音

时间:2016-06-02 19:19:30

标签: c++ string

所以我试图解决这个问题,这个算法计算并打印字符串中两个consonats之间发现的元音数量。 我已经制定了一个程序,但它一直给我错误的答案,我真的不知道什么是错的。 例如,对于输入:“oasele sunt fragile”它应该打印4但它实际打印5。

    #include <iostream>
    #include <cctype>
    #include <string.h>
    using namespace std;
    char s[255];
    int isvoc(int i)
    {
        char c=tolower(s[i]);
        if (isspace(c)) return 0;
        else
            if ((c=='a') || (c=='e') || (c=='i') || (c=='o') || (c=='u')) return 1;
                else return 0;
    }
   int main()
   {
   cin.get(s,255);
   int l=strlen(s),nr=0;
    for (int i=1;i<l-1;i++)
        if (!(isvoc(i-1)) && (isvoc(i)) && !(isvoc(i+1))) nr++;
   cout<<nr;
   }

1 个答案:

答案 0 :(得分:1)

您正在计算非元音之间出现的元音。因此,在“a e i”中,您将获得1而不是0的计数。您需要:

if (iscon(i-1) && isvoc(i) && iscon(i+1))

您可以通过多种方式实现iscon(),例如

bool iscon(int i) { return isalpha(str[i]) && !isvoc(i); }