Flesch Reading Ease (poj 3371)

时间:2020-12-23 15:06:11

题意:

  给出一篇规范的文章,求其 句子数、单词数 和 音节数把这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=;
while(scanf("%c",&c)!=EOF)
{
if(c==','||c==' ')
{
if(num<=)yinjie++;
else
{
for(int i=;i<=num;i++)
{
if(yuan(ci[i])&&!yuan(ci[i-]))
{
if((i==num-&&ci[i]=='e'&&(ci[num]=='s'||ci[num]=='d'))||(i==num&&ci[i]=='e'&&ci[num-]!='l'));
else yinjie++;
}
}
}
danci++;
num=;
}
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 ;
}