第14周 项目4-电子词典

/* 
 * 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;
}


运算结果:

 

知识点总结:

从文件中读取数据,函数的调用

学习心得:

在编写程序的过程中,即使不会也不能停下前进的脚步,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值