1038. Spell Checker
Time limit: 0.5 second
Memory limit: 64 MB
Memory limit: 64 MB
The boss of a firm that you are employed with is dissatisfied with the text processor Word. He wants you to write a better text processor by tomorrow. The interface of the new processor should be clearer, there should be more options, and the resulting text should be more beautiful. You told the boss that this work would take not less than four days. Then your boss asked you to begin with a spell checking program. This program should check capital and small letters. It should detect a mistake in each of the following cases.
- The first letter in a sentence is small.
- A capital letter is not the first letter in a word.
A word is a sequence of letters not containing any other symbols or ends of line.
The end of a sentence is defined a full stop, a question-mark or an exclamation mark.
Input
Input contains a text that consists of capital and small letters of the Latin alphabet (A–Z, a–z), digits (0–9), punctuation marks (.,;:-!?) and space characters. The text length is not more than 10000.
Output
Output should contain a number of mistakes in the input text.
Sample
input | output |
---|---|
This sentence iz correkt! -It Has,No mista;.Kes et oll. But there are two BIG mistakes in this one! and here is one more. | 3 |
/**
模拟就行了~
**/
#include<cstdio>
#include<cstring>
using namespace std;
char c;
int now,ans;
bool bo;
bool small(char c)
{
if(c>='a'&&c<='z')
return true;
return false;
}
bool big(char c)
{
if(c>='A'&&c<=90)
return true;
return false;
}
bool zimu(char c)
{
if (big(c)||small(c))
return true;
return false;
}
int main()
{
bo=true;
ans=0;
now=ans;
while(scanf("%c",&c)!=EOF)
{
if(zimu(c))
{
if(bo)
{
bo=false;
if(small(c))
ans++;
now++;
continue;
}
if(now>=1&&big(c))
{
ans++;
now++;
continue;
}
now++;
continue;
}
if(c=='.'||c=='?'||c=='!')
{
now=0;
bo=true;
continue;
}
now=0;
//printf("%d\n",ans);
}
printf("%d\n",ans);
return 0;
}