当前位置: 代码迷 >> 综合 >> C++十五周任务-电子词典
  详细解决方案

C++十五周任务-电子词典

热度:54   发布时间:2023-12-21 12:01:14.0
/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: fun.cpp
* 作 者:王锴英
* 完成日期:2012 年12 月 11日
* 版本号: v1.0
* 对任务及求解方法的描述部分:电子词典的二分查找!
* 输入描述:略
* 问题描述:略
* 程序输出:如下
*/
#include <fstream>
#include<iostream>
#include<string>
using namespace std;
string a[8100],b[8100];
int shiji=0;
int Seareh(int low, int high, string k);
int main()
{
string key="Hollow";
int m;
ifstream infile("dictionary.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for(int i=0;i<8100;i++)
{
infile>>a[i]>>b[i];
++shiji;
}infile.close();
while(key!="0000"){
cout<<"按键0000结束,请输入您要查的英文:";
cin>>key;
if (key=="0000")
break;
else
{
int low=0,high=shiji-1;
int index=Seareh(low, high, key);
if (index == -1) {
cout<<"本词库未收录或者请您检查您的拼写!"<<endl;
}
else  {
cout<<key<<'\t'<<b[index]<<endl;
}
}
}
cout<<endl<<endl;
return 0;
}
int Seareh(int low, int high, string k)
{
int mid;
while(low<=high)
{
mid=(low + high) / 2;
if(a[mid]==k)
{
return mid;
}
if(a[mid]>k)
high=mid-1;
else
low=mid+1;
}
return -1;
}

运行结果:

没文件呀,查不到词呀???