这可怎么办啊???第十六周项目五:升级版电子词典

/*
 * Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作    者:王颖
* 完成日期:2013 年 12 月 07 日
* 版 本 号:v1.0
* 输入描述: 无
* 问题描述:电子词典
* 程序输出:略
* 问题分析:略
* 算法设计:略
*/
#include <iostream>
#include<fstream>
#include<cstdlib>
#include<string>
using namespace std;
string a[10000],b[10000];         //声明外部变量
int num=0;
int search1(int low,int high,string k);
int search2(int low,int high,string f);
int main()
{
    int c;
    string key="hello";
    ifstream infile("fun1.txt",ios::in);
    if(!infile)                    //如果打不开,就强行关闭
    {
        cerr<<"error!"<<endl;
        exit(1);
    }
    for(int i=0; i<8100; i++)      //将字典读入数组
    {
        infile>>a[i]>>b[i];
        ++num;
    }
    infile.close();   //读入关闭

    do
    {
        cout<<"请输入选择:1.英译汉;2.中译英"<<endl;
       cin>>c;
        cout<<"请输入您要查的词(0000结束):";
        cin>>key;                                  //输入要查的词
        if(key=="0000")
            break;
        else
        {
            int low=0,high=num-1;                //定义low,high的范围
            int x=search1(low, high, key);
            int y=search2(low, high, key);
            if(x==-1||y==-1)                             //查无此词
            {
                cout<<"error!"<<endl;
            }
            else
            {
                switch(c)
                {
                case 1:
                    cout<<key<<"的英文意思是:"<<'\t'<<b[x];
                    break;
                case 2:
                    cout<<key<<"的中文意思是:"<<'\t'<<a[y];
                    break;
                default:
                    cout<<"error!";
                    break;
                }
            }
        }
    }
        while(1);
        cout<<"欢迎下次使用!"<<endl;
        return 0;
    }
    int search1(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;               //查找不到
    }
    int search2(int low,int high,string f)          //定义英译汉的二分法查找
    {
        int mid;
        while(low<=high)
        {
            mid=(low+high)/2;
            if(b[mid]==f)
            {
                return mid;
            }
            if(b[mid]>f)
                high=mid-1;
            else
                low=mid+1;
        }
        return -1;               //查找不到
    }


运行结果:这可怎么办啊???第十六周项目五:升级版电子词典_第1张图片

心得体会:我想做一个既可以英译汉。又可以汉译英的词典。可是为什么一加之后英译汉都查不到了???还有:中文要怎么输入?!!!

你可能感兴趣的:(这可怎么办啊???第十六周项目五:升级版电子词典)