所以我试图解决这个问题,这个算法计算并打印字符串中两个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;
}
答案 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); }