首页 > 代码库 > 第十七周项目7 电子词典(还有疑问,求解答)

第十七周项目7 电子词典(还有疑问,求解答)

要求:

做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000
个,英文、中文释义与词性间用’\t’隔开。
编程序,由用户输入英文词,显示词性和中文释义。
提示1:定义一个Word结构体表示一个词条,其中的数据成员stringenglish; 表示英文单词,stringchinese;表示
对应中文意思,stringword_class;表示该词的词性;定义Wordwords[8000]存放所有词条成员,intwordsNum;表示词
典中的词条数。
提示2:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
提示3:这样的项目,相关功能用函数实现,最好用多文件的形式组织
提示4:本项目的参考界面和未来的界面可以是下面的样子。不过暂时黑框框吧。

#include <iostream>
#include <fstream>
using namespace std;

struct Dict
{
    string eng;
    string cha;
    string shu;
};
int main()
{
    int i,num=0;
    Dict word[8000];
    ifstream infile("dictionary.txt",ios::in); 	//以输入的方式打开文件
    i=0;
    while(infile>>word[i].eng>>word[i].cha>>word[i].shu)
    {
        ++num;
        ++i;
    }
    infile.close();
    string Cin;
    while(cout<<"请输入您要查找的英文单词:",cin>>Cin)
    {
        int high=num-1,low=-1;
        int mid;
        for(;low<high;)
        {
            mid=(high+low)/2;
            if(word[mid].eng==Cin)
                break;
            else
            {
                if(word[mid].eng<Cin)
                    low=mid;
                else high=mid;
            }
        }
         if(low==high)
            cout<<"抱歉,查无此词"<<endl;
        else
            cout<<word[mid].eng<<"<------"<<word[mid].cha<<"    "<<word[mid].shu<<endl;

    }
    return 0;
}

运行结果:

技术分享

在这个程序中,当输入单词是不正常的,不知道为什么就是跳不出循环,

有人能提示一下吗!

第十七周项目7 电子词典(还有疑问,求解答)