第十六周实验报告3

作品名:电子词典

  1.      英文、中文释义与词性间用’\t’隔开。建一个表示词条的类Word,Word 类的一个对象可以描述一个词, 
  2.             类对象数组可以存储词库。将文件中的内容读到对象数组中,由用户输入英文词,显示中文释义。 
  3.             允许用户运行程序后,连续地查词典,直到输入”0000”结束 
  4. * 程序头部的注释结束 

 

 

 

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Word
{
private:
	string word;
	string mean;
	string type;
public:
	Word();
	Word(string wo, string me, string ty);
	friend void readfile(Word w[]);
	friend void findword(Word w[]);
};
Word::Word()
{
	word = "NULL";
	mean = "NULL";
	type = "NULL";
}

Word::Word(string wo, string me, string ty)
{
	word = wo;
	mean = me;
	type = ty;
}

void readfile(Word w[])
{
	ifstream infile("dictionary.txt",ios::in);
	if(! infile)
	{
		cerr << "open cerror" << endl;
		exit(1);
	}
	for(int i = 0; i < 8000; i++)
	{
		infile >> w[i].word >> w[i].mean >> w[i].type;
	}
	infile.close();
}
void findword(Word w[])
{
	string wo;
	do
	{
		cout << "输入要查找的单词(0000结束):";
		cin >> wo;
		if(wo == "0000")
		{
			break;
		}
		int a = 0, b = 8000, mid;
		while(a <= b)
		{
			mid = (a + b) / 2;
			if(w[mid].word == wo)
			{
				cout << w[mid].word << '\t'<< "的汉语意思是:" << w[mid].mean << '\t'<<"词性是:" << w[mid].type << endl;
				break;
			}
			else
			{
				if(wo > w[mid].word)
				{
					a = mid;
				}
				else
				{
					b = mid;
				}
			}
		}
	}while(1);
}
int main()
{
	
	Word w[8000];
	readfile(w);
	
	
	findword(w);
	system("PAUSE");
	return 0;
}



有学会了一个二分查找,哈哈哈。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值