Flesch Reading Ease (poj 3371)
题意:
给出一篇规范的文章,求其 句子数、单词数 和 音节数把这3个值代入题目给出的公式,输出其结果,保留2位小数。
标记单词分隔符: 逗号(,) 和 空格( )
句子分隔符:句号(.) 问号(?) 冒号(:) 分号(;) 感叹号(!)
音节处理要求:
(1)当单词总长度<=3时,音节数无条件+1
(2) 当单词总长度>3时,单词中每出现一个元音字母(a、e、i、o、u、y),音节数+1,但是连续的(>=2)元音字母只按1个音节计算,且当单词后缀为-es、-ed和-e时,后缀的元 音字母e不列为音节数计算。但是后缀-le例外,要计算音节数。
ans=206.835-1.015*(danci/jvzi)-84.6*(yinjie/danci)
#include<cstdio> #include<iostream> #define N 1010 using namespace std; char ci[N]; double danci,jvzi,yinjie; bool yuan(char c) { if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='y')return true; return false; } int main() { char c;int num=0; while(scanf("%c",&c)!=EOF) { if(c==','||c==' ') { if(num<=3)yinjie++; else { for(int i=1;i<=num;i++) { if(yuan(ci[i])&&!yuan(ci[i-1])) { if((i==num-1&&ci[i]=='e'&&(ci[num]=='s'||ci[num]=='d'))||(i==num&&ci[i]=='e'&&ci[num-1]!='l')); else yinjie++; } } } danci++; num=0; } else if(c=='.'||c=='?'||c==':'||c==';'||c=='!')jvzi++; else ci[++num]=c; } double ans=206.835-1.015*(danci/jvzi)-84.6*(yinjie/danci); printf("%.2lf",ans);//G++不能用%lf ,要用%f return 0; }