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\n",(206.835-1.015*word*1.0/sen-84.6*syll*1.0/word));

91      return 0;

92 }
View Code

 

 

 

 

你可能感兴趣的:(reading)