?? main.cpp
字號:
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("e.in");
int wordscode[10000];
int codepoint=-1;
char word[250];
char*s=&word[0];
int wordpoint=-1;
const char* article[2] = {"a", "the"};
const char* noun[8] = {"tom", "jerry", "goofy", "mickey", "jimmy", "dog", "cat", "mouse"};
const char* verb[4] = {"hate", "love", "know", "like"};
const char* link[1] = {"and"};
const char* smp[1] = {","};
int equal(const char*s1,const char*s2)
{
int i=0;
while((s1[i]!=0)&&(s2[i]!=0)){if(s1[i]!=s2[i])return 0;i++;}
if(s1[i]!=s2[i])return 0;
return 1;
}
bool VERB_test()
{char temp;
for(int i=4;i<=wordpoint;i++)if(word[i]!='s')return false;
temp=word[4];word[4]=0;
if(!((equal(s,verb[0]))||(equal(s,verb[1]))||(equal(s,verb[2]))||(equal(s,verb[3]))))return false;
word[4]=temp;
return true;
}
int getword()//return 1:file end; return 0:file is not at the end
{
for(int i=0;i<=codepoint+2;i++)wordscode[i]=0;
codepoint=-1;
wordpoint=-1;
char alpha;
do
{
alpha=in.get();
if(((alpha<='z')&&(alpha>='a'))||(alpha==',')){wordpoint++;word[wordpoint]=alpha;continue;}
if(alpha==' ')
{
codepoint++;
word[wordpoint+1]=0;
if((equal(s,noun[0]))||(equal(s,noun[1]))||(equal(s,noun[2]))||(equal(s,noun[3]))||(equal(s,noun[4]))||(equal(s,noun[5]))||(equal(s,noun[6]))||(equal(s,noun[7])))wordscode[codepoint]=1;
if((equal(s,article[0]))||(equal(s,article[1])))wordscode[codepoint]=3;
if(equal(s,link[0]))wordscode[codepoint]=4;
if(VERB_test())wordscode[codepoint]=2;
if(equal(s,smp[0]))wordscode[codepoint]=5;
wordpoint=-1;
}
/* if(alpha==',')
{
codepoint++;
wordscode[codepoint]=5;
wordpoint=-1;
in.get();
}
*/
if((alpha=='\n')||(in.eof()))
{
codepoint++;
word[wordpoint+1]=0;
if((equal(s,noun[0]))||(equal(s,noun[1]))||(equal(s,noun[2]))||(equal(s,noun[3]))||(equal(s,noun[4]))||(equal(s,noun[5]))||(equal(s,noun[6])||(equal(s,noun[7]))))wordscode[codepoint]=1;
if((equal(s,article[0]))||(equal(s,article[1])))wordscode[codepoint]=3;
if(equal(s,link[0]))wordscode[codepoint]=4;
if(VERB_test())wordscode[codepoint]=2;
if(equal(s,smp[0]))wordscode[codepoint]=5;
codepoint++;
wordscode[codepoint]=6;
wordpoint=-1;
}
}while((codepoint==-1)||(wordscode[codepoint]!=6));
if(in.eof())return 1;
return 0;
}
int sp=0;//識別的起始位置
int END()
{if(sp==codepoint)return 1;return 0;
}
int NOUN()
{
if(wordscode[sp]==1){sp++;return 1;}
return 0;
}
int VERB()
{
if(wordscode[sp]==2){sp++;return 1;}
return 0;
}
int ARTICLE()
{
if(wordscode[sp]==3){sp++;return 1;}
return 0;
}
int LINK()
{
if(wordscode[sp]==4){sp++;return 1;}
return 0;
}
int ACTOR()
{
int oldsp;
oldsp=sp;
ARTICLE();
if(NOUN())return 1;else return 0;
}
int ACTIVE_LIST()
{
if(!ACTOR())return 0;
int oldsp;
oldsp=sp;
if(LINK())return ACTIVE_LIST();
sp=oldsp;
return 1;
}
int ACTION()
{
if(!ACTIVE_LIST())return 0;
if(!VERB())return 0;
if(!ACTIVE_LIST())return 0;
return 1;
}
int STATEMENT()
{
if(!ACTION())return 0;
while(wordscode[sp]==5)
{sp++;if(!ACTION())return 0;}
if(END())return 1;
return 0;
}
int main()
{
int n;
in>>n;in.get();
for(int i=1;i<=n;i++)
{getword();
//for(int j=0;j<=codepoint;j++)cout<<wordscode[j];
//cout<<endl;
if(STATEMENT())cout<<"YES I WILL"<<endl;else cout<<"NO I WON't"<<endl;sp=0;}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -