问题及代码
/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:辛彬
* 完成日期:2014年 12 月 1 日
* 版 本 号:v1.0
*
* 问题描述: 做一个简单的电子词典。。
* 输入描述:英语单词。
* 程序输出:释义;
*/
#include <fstream>
#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;
string e[8000],c[8000];
int cmp(string k,int h,int l);
int main()
{
int wordsNum=0;
string key; //查询关键词
//将文件中的数据读入到对象数组中
ifstream infile("dictionary.txt",ios::in); //以输入的方式打开文件
if(!infile) //测试是否成功打开
{
cerr<<"open error!"<<endl;
exit(1);
}
while (infile>>e[wordsNum]>>c[wordsNum]) //读取成功,则重复从文件中读
{
++wordsNum;
}
infile.close();
do
{
int high=wordsNum-1,low=0,index;
cout<<"请输入要查询的词(按0000结束):";
cin>>key;
if(key=="0000")
break;
index=cmp(key,high,low);
if(index==-1)
cout<<"查无次词!"<<endl<<endl;
else
cout<<"该词的释义为:"<<c[index]<<endl<<endl;
}
while(1);
cout<<"欢迎下次再来!";
return 0;
}
int cmp(string k,int h,int l)
{
int mid;
while(l<=h)
{
mid=(l+h)/2;
if(k==e[mid])
return mid;
else if(k<=e[mid])
h=mid-1;
else
l=mid+1;
}
return -1;
}
运行结果:
学习感悟:错了很多次,还出现了不知名的错误。。。。。采用了贺老师的方法才解决了。