poj 3371 Flesch Reading Ease

http://poj.org/problem?id=3371

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<iostream>
 5 #define maxn 2000
 6 using namespace std;
 7 char s[maxn];
 8 int word=0,sen=0,syll=0;
 9 bool check(char ch)
10 {
11     if(ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u'||ch=='y')
12         return true;
13     if(ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U'||ch=='Y')
14         return true;
15     return false;
16 }
17 int main()
18 {
19     while(cin>>s)
20     {
21         int i;
22         int wordlen=0;
23         int syl=0;
24         bool flag=false;
25         for(i=0; s[i]; i++)
26         {
27             if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
28             {
29                 wordlen++;
30                 if(wordlen<=3)
31                 {
32                     if(!((s[i+1]>='a'&&s[i+1]<='z')||(s[i+1]>='A'&&s[i+1]<='Z')))
33                     {
34                         syll++;
35                         syll-=syl;
36                         syl=0;
37                         continue;
38                     }
39                 }
40                 if(check(s[i]))
41                 {
42                     if(s[i]=='e')
43                     {
44                         if((!((s[i+1]>='a'&&s[i+1]<='z')||(s[i+1]>='A'&&s[i+1]<='Z')))&&s[i-1]=='l')
45                         {
46                             syll++;
47                             syl++;
48                             continue;
49                         }
50                         else if(!((s[i+1]>='a'&&s[i+1]<='z')||(s[i+1]>='A'&&s[i+1]<='Z')))
51                             continue;
52                         else if((s[i+1]=='d'||s[i+1]=='s')&&(!((s[i+2]>='a'&&s[i+2]<='z')||(s[i+2]>='A'&&s[i+2]<='Z'))))
53                         {
54                             continue;
55                         }
56                     }
57                     if(!flag)
58                     {
59                         flag=true;
60                         syll++;
61                         syl++;
62                         continue;
63                     }
64                     else
65                         continue;
66                 }
67                 flag=false;
68             }
69             else if(s[i]==',')
70             {
71                 flag=false;
72                 wordlen=0;
73                 syl=0;
74                 word++;
75             }
76             else if(s[i]=='.'||s[i]=='?'||s[i]=='!'||s[i]==':'||s[i]==';')
77             {
78                 flag=false;
79                 wordlen=0;
80                 word++;
81                 syl=0;
82                 sen++;
83             }
84         }
85         if((s[i-1]>='a'&&s[i-1]<='z')||(s[i-1]>='A'&&s[i-1]<='Z'))
86         {
87             word++;
88         }
89     }
90       printf("%.2lf
",(206.835-1.015*word*1.0/sen-84.6*syll*1.0/word));
91      return 0;
92 }
View Code
原文地址:https://www.cnblogs.com/fanminghui/p/3525446.html