UVa OJ Kindergarten Counting Game

题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=94&problem=435&mosmsg=Submission+received+with+ID+10020209

目标:计词

折腾了两个小时,代码修修补补,实在狼狈

以下是我自己的代码(可读性不行啊):读取字符串用了gets()

#include <iostream>
#include <stdio.h>
#include <ctype.h>
using namespace std;

const int MAXN = 100000;

int main()
{
    int front,rear,count;
    char str[MAXN];
    while(gets(str))
    {
        count = 0 ;
        front = 0 ;
        rear = 0 ;
        for(int i=0; ; i++)
        {
            
            if( i == MAXN || !isalpha(str[i]) )
            {
                rear = i ;
                if( front != rear && isalpha(str[front]))
                    count ++;
                front = i + 1;
            }
            if(str[i] == '\0')
                break;
        }
        cout<<count<<endl;
    }
    return 0;
}

别人的代码如下(自己小改了一下,可读性还是挺高的):

#include <iostream>
#include <stdio.h>
#include <ctype.h>
using namespace std;

int main()
{
    int cnt = 0;
    int inword = 0;
    char ch;
    while(ch=getchar())
    {
        if(isalpha(ch))
        {
            inword = 1;
        }
        else if(ch == '\n')//  碰到回车输出cnt
        {
            cout << cnt + inword << endl;
            cnt = 0;
            inword = 0;
        }
        else if(inword)//  避免有连续空格或字符出现
        {
            cnt++;
            inword = 0 ;
        }
    }
    return 0;
}

 

posted @ 2012-04-22 11:52  川川.aug  阅读(140)  评论(0编辑  收藏  举报