版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QingCoffe/article/details/84191918
ummm.....这题也是泡泡水题....判断有点烦
AC代码:
# include<iostream>
# include <string>
using namespace std;
char v[5] = { 'a', 'e', 'i', 'o', 'u' };// 元音'a', 'e', 'i', 'o', and 'u';
//规则 1 至少一个元音 2 不能出现连续3个元音3个辅音 4 不能出现2个连续的相同字母 除了 ee oo
void out(string &str, bool isok) {
if (isok) {
cout << "<" << str << ">" << " is acceptable." << endl;
}
else {
cout << "<" << str << ">" << " is not acceptable." << endl;
}
}
bool IsOk(string&str) {
bool vv=false;
int vn, cn, cl;
char pre='1';
int i,j;
bool isv;
vn = cn = 0;
for (i = 0; i < str.length(); ++i) {
isv = false;
if (str[i] == pre) {//查连续的
if (str[i] == 'e' || str[i] == 'o') //ee oo 合法
;//do nothing
else
return false;
}
for (j = 0; j < 5; ++j) {
if (str[i] == v[j])
{
vv = true;//判全局
isv = true;//判当前数是否为元音
cn = 0;//辅音个数重置
vv++;
vn++;
if (vn == 3)
return false;
break;
}
}
if (!isv) {//是辅音
vn = 0;//元音个数重置
cn++;
if (cn == 3) {
return false;
}
}
pre = str[i];
}
if (vv)
return true;
else
return false;
}
int main(void) {
string letter;
cin >> letter;
while (strcmp(letter.c_str(),"end")) {
out(letter, IsOk(letter));
cin >> letter;
}
system("pause");
return 0;
}