📄 tense.cpp
字号:
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Est_Form;
return pDictNode1;
}
else if(Word[WordLen-4]=='i')
{
Word[WordLen-4] = 'y'; //改y为i,加er
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Est_Form;
return pDictNode1;
}
}
}
strcpy(Word,inputword);
p=Word+ WordLen-3;
strcpy(tail,p);
if(strcmp(tail,"ing")==0)
{ // -ing, word应为动词,
p[0]='\0';
//cdq changed 12.8
while((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if ( !SearchCate(pDictNode1,Cate_v) )
{
break;
}
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ing_Form;
return pDictNode1;
}
p[0]='e'; //去e,加ing
p[1]='\0';
while((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if ( !SearchCate(pDictNode1,Cate_v) )
{
break;
}
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ing_Form;
return pDictNode1;
}
Word[WordLen-4] = '\0'; //双写最后的字母,再加ing,
while((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if ( !SearchCate(pDictNode1,Cate_v) )
{
break;
}
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ing_Form;
return pDictNode1;
}
} //cdq changed 12.8
strcpy(Word,inputword);
p=Word+ WordLen-3;
strcpy(tail,p);
if(strcmp(tail,"ves")==0)
{ // -ves, word应为名词,
p[0]='f';
p[1]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
pDictNode1->m_byDictForm = S_Form;
pDictNode1->m_byDictNumber = Multi_Number;
return pDictNode1;
}
p[1]='f';
p[2]='e';
p[3]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
pDictNode1->m_byDictForm = S_Form;
pDictNode1->m_byDictNumber = Multi_Number;
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-3;
strcpy(tail,p);
if(strcmp(tail,"ies")==0)
{ // -ies, word应为名词,
p[0]='y';
p[1]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
//Mystrcpy(pDictNode1,"Cate=n",3);
pDictNode1->m_byDictForm = S_Form;
pDictNode1->m_byDictNumber = Multi_Number;
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-2;
strcpy(tail,p);
if(strcmp(tail,"th")==0)
{// <20序数词
p[0] = '\0';
if((pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if(SearchCate(pDictNode2,Cate_number))
{
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
}
else if(strcmp(Word,"fif")==0 )
{
strcpy(Word,"five");
pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod);
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
else if(strcmp(Word,"eigh")==0 )
{
strcpy(Word,"eight");
pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod);
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
else if(strcmp(Word,"nin")==0 )
{
strcpy(Word,"nine");
pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod);
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
else if(strcmp(Word,"twelf")==0 )
{
strcpy(Word,"twelve");
pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod);
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
/*
for(int j=0; j<WordLen; j++)
{
if(!isdigit(Word[j]))
break;
}
for(int j=0; j<WordLen-2; j++)
{
if(!isdigit(Word[j]))
break;
}
if(j == WordLen-2)
{
strcpy(temp,"第");
strcat(temp,Word);
Mystrcpy(pDictNode1,temp,2);
Mystrcpy(pDictNode1,"dig",3);
}
*/
}
strcpy(Word,inputword);
p=Word+ WordLen-4;
strcpy(tail,p);
if(strcmp(tail,"ieth")==0)
{// >20序数词
p[0]='y';
p[1]='\0';
if((pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if(SearchCate(pDictNode2,Cate_number))
{
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
}
}
pDictNode1=CreateNewWord(inputword); //生词
}
return pDictNode1;
}
BOOL IsDigitalWord(char *Word,int WordLen)
{ //是否为数字串
char *p;
for(int i=0; i<WordLen; i++)
if(!isdigit(Word[i]) )
{
if ( (p=strstr(Word,"st"))!=NULL || (p=strstr(Word,"nd"))!=NULL ||
(p=strstr(Word,"rd"))!=NULL || (p=strstr(Word,"th"))!=NULL )
{
if ( (WordLen-i)==2 )
{
return TRUE;
}
else
return FALSE;
}
else
return FALSE;
}
return TRUE;
}
BOOL IsAbreivWord(char *Word)
{
if(strcmp("Mr",Word) == 0)
return TRUE;
else if(strcmp("Ms",Word) == 0)
return TRUE;
else if(strcmp("Mrs",Word) == 0)
return TRUE;
else if(strcmp("Dr",Word) == 0)
return TRUE;
else if(strcmp("Prof",Word) == 0)
return TRUE;
else if(strcmp("sb",Word) == 0)
return TRUE;
else if(strcmp("sth",Word) == 0)
return TRUE;
else return FALSE;
}
BOOL isAppellation(char *Word)
{
if(strcmp("Mr.",Word) == 0)
return TRUE;
else if(strcmp("Ms.",Word) == 0)
return TRUE;
else if(strcmp("Mrs.",Word) == 0)
return TRUE;
else if(strcmp("Dr.",Word) == 0)
return TRUE;
else if(strcmp("Prof.",Word) == 0)
return TRUE;
else if(strcmp("Miss",Word) == 0)
return TRUE;
else
return FALSE;
}
int IsWordTail(char *Tail)
{
if(strcmp("s",Tail) == 0)
return Tail_s;
else if(strcmp("d",Tail) == 0)
return Tail_d;
else if(strcmp("re",Tail) == 0)
return Tail_re;
else if(strcmp("ll",Tail) == 0)
return Tail_ll;
else if(strcmp("ve",Tail) == 0)
return Tail_ve;
else if(strcmp("m",Tail) == 0)
return Tail_m;
else if(strcmp("t",Tail) == 0)
return Tail_t;
return -1;
}
DictNode* CreateNewWord(char * Word)
{
DictNode* pDictNode;
int i;
pDictNode = new DictNode;
i = strlen(Word);
pDictNode->m_nLxhCate = NULL;
if(i ==1)
Mystrcpy(pDictNode,"sym",3);
else if (strstr(Word,"'s")!=0)
Mystrcpy(pDictNode,"ns",3);
else
Mystrcpy(pDictNode,"n",3);
pDictNode->m_pszEnglish = new char[i+1];
pDictNode->m_pszOrig = new char[i+1];
strcpy(pDictNode->m_pszEnglish,Word);
strcpy(pDictNode->m_pszOrig,Word);
pDictNode->m_byDictForm = STYLE_ORIG;
pDictNode->m_byDictNumber = Sing_Number;
pDictNode->m_byMaxPhraseLen = DefaMaxPhraseLen;
pDictNode->m_pNextWordNode = NULL;
pDictNode->m_pPrevWordNode = NULL;
pDictNode->m_nEnglishLen = i;
pDictNode->m_bIsExistOrig = TRUE;
pDictNode->m_nOrigLen = i;
pDictNode->m_nWordStyle = 0;
pDictNode->m_bIsExistAmbig = 0;
pDictNode->m_pszAmbig = NULL;
pDictNode->m_nAmbigLen = 0;
pDictNode->m_nChinNum = 0;
pDictNode->m_pFirstChin = NULL;
return pDictNode;
}
//cdq add begin
DictNode* CreateComposeWord(DictNode *pDictNode2,
DictNode *pDictNode3,
char * ComposeWord)
{//生成合成词
DictNode* pDictNode;
pDictNode = new DictNode;
char *p;
int nNewLen;
int i;
i=strlen(ComposeWord);
pDictNode->m_pszEnglish = new char[i+1];
pDictNode->m_pszOrig = new char[i+1];
pDictNode->m_nLxhCate = NULL;
strcpy(pDictNode->m_pszEnglish,ComposeWord);
strcpy(pDictNode->m_pszOrig,ComposeWord);
pDictNode->m_byDictForm = STYLE_ORIG;
pDictNode->m_byDictNumber = NULL;
pDictNode->m_byMaxPhraseLen = DefaMaxPhraseLen;
pDictNode->m_pNextWordNode = NULL;
pDictNode->m_pPrevWordNode = NULL;
pDictNode->m_nEnglishLen = i;
pDictNode->m_bIsExistOrig = TRUE;
pDictNode->m_nOrigLen = i;
pDictNode->m_nWordStyle = 0;
pDictNode->m_bIsExistAmbig = 0;
pDictNode->m_pszAmbig = NULL;
pDictNode->m_nAmbigLen = 0;
pDictNode->m_nChinNum = 1;
pDictNode->m_pFirstChin = new DictChin;
if ( pDictNode2->m_pFirstChin==NULL ||
pDictNode3->m_pFirstChin==NULL )
{
strcat(pDictNode2->m_pszOrig,pDictNode3->m_pszOrig);
nNewLen=strlen(pDictNode2->m_pszOrig);
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode2->m_pszOrig);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nCate=Cate_n;
}
else if ( SearchCate(pDictNode2,Cate_dig) &&
SearchCate(pDictNode3,Cate_dig) )
{
strcat(pDictNode2->m_pszEnglish,"-");
strcat(pDictNode2->m_pszEnglish,pDictNode3->m_pszEnglish);
nNewLen=strlen(pDictNode2->m_pszEnglish);
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode2->m_pszEnglish);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nCate=Cate_dig;
}
else if ( SearchCate(pDictNode2,Cate_number) &&
SearchCate(pDictNode3,Cate_number) &&
((p=strstr(pDictNode3->m_pFirstChin->m_pszChinese,"第"))==NULL) )
{
strcat(pDictNode2->m_pFirstChin->m_pszChinese,pDictNode3->m_pFirstChin->m_pszChinese);
nNewLen=strlen(pDictNode2->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode2->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nCate=Cate_number;
}
else if ( SearchCate(pDictNode2,Cate_number) &&
SearchCate(pDictNode3,Cate_number) &&
((p=strstr(pDictNode3->m_pFirstChin->m_pszChinese,"第"))!=NULL) )
{
pDictNode3->m_pFirstChin->m_pszChinese=p+2;
strcat(pDictNode3->m_pFirstChin->m_pszChinese,"分之");
strcat(pDictNode3->m_pFirstChin->m_pszChinese,
pDictNode2->m_pFirstChin->m_pszChinese);
nNewLen=strlen(pDictNode3->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode3->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nCate=Cate_number;
}
else if (SearchCate(pDictNode2,Cate_adj))
{
while ( pDictNode2->m_pFirstChin->m_nCate != Cate_adj )
{
pDictNode2->m_pFirstChin=pDictNode2->m_pFirstChin->m_pNextChin;
}
if ( (p=strchr(pDictNode2->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -