/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:呼亚萍
* 完成日期:2014年 12 月 1日
* 版 本 号:v1.0
*
* 问题描述:编写程序,做一个简单的电子词典,由用户输入英文词,显示中文的意思
* 输入描述:相应的程序
* 程序输出:输入英文词的中文的意思
*/
#include<fstream>
//处理文件要包括头文件fstream
#include<iostream >
#include<cstdlib>
//调用exit(1)需要包含cstdlib
#include<string>
using namespace std;
string e[8000],c[8000];//英文和中文数组,要由文件中输入
int wordsNum=0;//词汇中实际的词文条数
int BinSeareh(int low, int high, string k);
int main()
{
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();
cout<<"请输入要查询的词(以10结束)"<<endl;
do
{
cin>>key;
if(key=="10")
break;
else
{
int low=0,high=wordsNum-1;
int index=BinSeareh(low,high,key);
if(index==-1)
cout<<"查无此词"<<endl;
else
cout<<key<<"中文意思是:"<<c[index]<<endl;
}
}
while(1);
cout<<"欢迎您再次使用!"<<endl;
return 0;
}
int BinSeareh(int low, int high, string k)
{
int mid;
while (low<=high)
{
mid=(low+high)/2;
if(e[mid]==k)
{
return mid;
}
if(e[mid]>k)
high=mid-1;
else
low=mid+1;
}
return -1;
}
运算结果:
知识点总结:
从文件中读取数据,函数的调用
学习心得:
在编写程序的过程中,即使不会也不能停下前进的脚步,加油!