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; }