十六周任务三电子词典

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:   十六周任务三电子词典                           
* 作    者:石丽君                              
* 完成日期:     2012    年     6  月      5  日
* 版 本 号:          

* 对任务及求解方法的描述部分
* 输入描述: 电子词典
做一个简单的电子词典。在文件dictionary.txt 中,保存的是英汉对照的一个词典,词汇量近8000 个,
英文、中文释义与词性间用’\t’隔开。建一个表示词条的类Word,Word 类的一个对象可以描述一个词,
类对象数组可以存储词库。将文件中的内容读到对象数组中,由用户输入英文词,显示中文释义。
提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
拓展1(选做):允许用户运行程序后,连续地查词典,直到输入”0000”结束。
拓展2(选做):试着做一个窗口版的电子词典。
拓展3(选做):使这个词典,读入一篇文章,输出其中的所有名词(或动词,或全部实词)。——
搜索引擎用类似的功能,用于筛去虚词,因为并不是所有词都值得索引。
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束
*/


#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Word
{
public:
	Word(string e,string c,string t):english(e),chinese(c),type(t){}
	Word();
	friend void search_word(string a,Word word[]);
	friend void get_frome_file(Word word[]);
private:
	string english;
	string chinese;
	string type;
};
Word::Word()
{
	english="0000";
	chinese="0000";
	type="0000";

}
void search_word(string a,Word word[])
{
	int height=8000,low=0,mid;
	while(a!="0000")
	{
		mid=(height+low)/2;
		if(a==word[mid].english)
		{
			cout<<"中文意思:"<<word[mid].chinese<<'\t'<<"词性:"<<word[mid].type<<endl;break;
		}
		else
		{
			if(a<word[mid].english)
				height=mid-1;
			else
				low=mid+1;
		}

		if(low>height)
		{
			cout<<"查无此词!"<<endl;
			break;
		}
	}
}
void get_frome_file(Word word[])
{
	ifstream infile("dictionary.txt",ios::in);
	if(!infile)
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
	for(int i=0;i<8000;i++)
	{
		infile>>word[i].english>>word[i].chinese >>word[i].type ;
	}
	infile.close();

}
int main()
{

	Word word[8000];
	string b;
	get_frome_file( word);
	while(1)
	{
		cout<<"请输入要查找的单词,按0000结束"<<endl;
		cin>>b;
		if(b=="0000") 
		{
			cout<<"欢迎再次使用"<<endl;
			break;
		}
		search_word( b, word);
	}
	system("pause");
	return 0;


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值