问题及代码
/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:辛彬
* 完成日期:2015年 1 月 2 日
* 版 本 号:v1.0
*
* 问题描述: 做一个电子词典。
* 输入描述:英文单词。
* 程序输出:释义;
*/
#include <iostream>
#include <cstring>
#include <fstream>
#include <cstdlib>
using namespace std;
struct Word
{
string english;
string chinese;
string word_class;
};
void search(Word [],int);
int main()
{
Word w[8000];
int i,wordNum;
ifstream infile("dictionary.txt",ios::in); //以输入的方式打开文件
if(!infile) //测试是否成功打开
{
cerr<<"open error!"<<endl;
exit(1);
}
i=0;
while(infile>>w[i].english>>w[i].chinese>>w[i].word_class)
{
++wordNum;
++i;
}
infile.close();
search(w,wordNum);
return 0;
}
void search(Word w[],int n)
{
string words;
int high,low,mid;
while(cin>>words)
{
low=0;
high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(words==w[mid].english)
{
cout<<w[mid].word_class<<'\t'<<w[mid].chinese<<endl;
break;
}
else if(words>w[mid].english)
low=mid+1;
else if(words<w[mid].english)
high=mid-1;
}
if(low>high)
cout<<"查无此词!"<<endl;
}
}
运行结果:
学习感悟:终于做完了,可喜可贺,可喜可贺。。。。。。