因此,我尝试解决这一问题,该算法对一个字符串中两个音节之间的元音数量进行计数并打印。
我已经编写了一个程序,但是它总是给我错误的答案,我真的不知道有什么问题。
例如,对于输入:“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;
   }

最佳答案

您正在计算出现在非元音之间的元音。因此,在“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); }

07-25 20:36