Похоже, у вас есть опечатка, ваш код:
if(string[i]=='a'||string[i]=='A'||string[i]=='e'||string[i]=='E'||string[i]=='i'||string[i]=='I'||string[i]=='o'||string[i]=='O'||string[i]=='u'||string[i]=='U')
{
if(string[i+1]=='a'||string[i]=='A'||string[i]=='e'||string[i]=='E'||string[i]=='i'||string[i]=='I'||string[i]=='o'||string[i]=='O'||string[i]=='u'||string[i]=='U')
count++;
}
Обратите внимание на второй оператор if, все, кроме первого условия, проверяет строку [i] вместо строки [i + 1].Так что если у вас есть «A» в строке [i], то это будет увеличивать количество независимо от того, что в строке [i + 1].
Вы хотите:
if(string[i]=='a'||string[i]=='A'||string[i]=='e'||string[i]=='E'||string[i]=='i'||string[i]=='I'||string[i]=='o'||string[i]=='O'||string[i]=='u'||string[i]=='U')
{
if(string[i+1]=='a'||string[i+1]=='A'||string[i+1]=='e'||string[i+1]=='E'||string[i+1]=='i'||string[i+1]=='I'||string[i+1]=='o'||string[i+1]=='O'||string[i+1]=='u'||string[i+1]=='U')
count++;
}
Я такжерекомендуем вам поискать функцию tolower
, которая будет символом нижнего регистра, а это означает, что вам нужно делать меньше сравнений, которые сделают этот код намного проще для чтения и обслуживания.Также вы можете подумать об использовании здесь переключателя или любого массива и, возможно, написать вспомогательную функцию.
Я думаю, я просто не могу вынести этот код, как есть, вот лучшая версия:
int is_vowel(char ch)
{
switch (tolower(ch))
{
case 'a': case 'e': case 'i': case 'o': case 'u':
return 1;
default:
return 0;
}
}
А затем сделайте свое заявление if:
if (is_vowel(string[i]) && is_vowel(string[i+1]))
count++;
Видите, намного чище и легче для чтения, не правда ли?