这段代码如果按照题意来说应该不正确吧?‘lol'只有三段也能输出yes,正确的应该是怎样写的?

这段代码如果按照题意来说应该不正确吧?‘lol'只有三段也能输出yes,正确的应该是怎样写的?

问题描述:

图片说明

#include<iostream>
#include<string>
using namespace std;

string str;
int pos;

bool isYuan(char c) //判断是否为元音 
{
    return c=='a'||c=='e'||c=='i'||c=='o'||c=='u';
}
bool yuan()         //遍历元音段 
{
    int len=0;
    for(;pos<=str.length();pos++){
        if(!isYuan(str[pos])) break;
        len++;
    }
    return len;
}
bool zhuo()         //遍历辅音段 
{
    int len=0;
    for(;pos<=str.length();pos++){
        if(isYuan(str[pos])) break;
        len++;
    }
    return len;
}
bool serch()        //开始遍历 
{
    pos=0;
    if(zhuo()&&yuan()&&zhuo()&&yuan()&&pos==str.length()) return true;
    else return false;
}

int main()
{
    cin>>str;
    if(serch()) cout<<"yes"<<endl;
    else cout<<"no"<<endl;
    return 0;
}

来源:https://blog.****.net/the_ZED/article/details/104885583?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160282276719724836711550%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160282276719724836711550&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-2-104885583.pc_first_rank_v2_rank_v28&utm_term=%E8%93%9D%E6%A1%A5%E6%9D%AF%E7%AC%AC%E5%8D%81%E4%B8%80%E5%B1%8A%E6%A0%A1%E5%86%85%E6%A8%A1%E6%8B%9F%E8%B5%9B&spm=1018.2118.3001.4187

c++的话,用正则表达式即可

^([^aeiou]+[aeiou]+){2}$