1575:Easier Done Than Said?

keyword

文字列処理 C++

概要

文字列が与えられたとき、次の3条件を満たすかどうか判定する。

  • 母音が1文字以上含まれている。
  • 母音や子音が3文字以上続かない。
  • ee、oo以外に同じ文字が続かない。

書くだけ。

bool isVowel(char c){
    return c=='a'||c=='i'||c=='u'||c=='e'||c=='o';
}

bool isOk(char str[]){
    int i, n=strlen(str);

    REP(i,n) if(isVowel(str[i])) break;
    if(i==n) return false;

    REP(i,n-2) if(isVowel(str[i]) && isVowel(str[i+1]) && isVowel(str[i+2])) return false;

    REP(i,n-2) if(!isVowel(str[i]) && !isVowel(str[i+1]) && !isVowel(str[i+2])) return false;

    REP(i,n-1) if(str[i]!='e' && str[i]!='o' && str[i]==str[i+1]) return false;

    return true;
}

int main(){
    char str[22];

    while(scanf("%s\n",str)){
        if(!strcmp(str,"end")) break;

        if(isOk(str)) printf("<%s> is acceptable.\n", str);
        else printf("<%s> is not acceptable.\n", str);
    }

    return 0;
}