/*
【任务 3】电子词典
做一个简单的电子词典。在文件 dictionary.txt 中,保存的是英汉对照的一个词典,词汇量近
8000 个,
英文、中文释义与词性间用’\t’隔开。建一个表示词条的类 Word,Word 类的一个对象可以描述一
个词,
类对象数组可以存储词库。将文件中的内容读到对象数组中,由用户输入英文词,显示中文释义。
提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
拓展 1(选做):允许用户运行程序后,连续地查词典,直到输入”0000”结束。
*/
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: dictionary.cpp
* 作 者: 计114-3 王兴锋
* 完成日期: 2012 年 6 月 4 日
* 版 本 号: V 3.0
* 程序头部的注释结束
*/
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
class Word
{
public:
string word;
string chinese;
string lexical;
};
void read_words(int num, Word words[]);
void show_word(int index, Word words[]);
void find_word(string key, int num, Word words[]);
int main( )
{
Word words[7962];
int num = 7962;
string key;
read_words(num, words);//读入文件中的数据
// for (int i = 0; i < num; i++)
// show_word(i, words);
while (true)
{
cout << "请输入要查的单词" << endl;
cin >> key;
if (key == "0000")
break;
find_word(key, num, words);
}
system("PAUSE");
return 0;
}
//定义从文件读入数据函数
void read_words(int num, Word words[])
{
ifstream infile("dictionary.txt", ios::in);
if(!infile)
{
cerr << "dictionary.txt open error!" << endl;
system("PAUSE");
exit(1);
}
for(int i = 0; i < num; i++)
{
infile >> words[i].word >> words[i].chinese >> words[i].lexical;
}
infile.close();
}
void show_word(int index, Word words[])
{
cout << words[index].word << '\t' << words[index].chinese << '\t' << words
[index].lexical << endl;
}
void find_word(string key, int num, Word words[])
{
int min = 0, max = num, mid;
while (true)
{
mid = (min+max) / 2;
if(words[mid].word == key)
{
show_word(mid, words);
break;
}
else
{
if(key < words[mid].word)
{
max = mid - 1;
}
else
{
min = mid + 1;
}
}
if(min == max + 1)
{
cout << "查无此词!" << endl;
break;
}
}
}
/*
请输入要查的单词
jkghk
查无此词!
请输入要查的单词
key
key 钥匙,关键,答案 n.
请输入要查的单词
0000
请按任意键继续. . .
*/
分享到:
相关推荐
C++ 程序设计实验报告----车辆信息管理系统
C++实验报告--继承和派生.pdf
C++大型实验报告--图书管理系统.docx
Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-...
C++学生信息管理系统实验报告-示例.docx
C++实验课程书中的实验------小小图书馆源代码下载
C++上机实验报告-实验六全文共11页,当前为第1页。C++上机实验报告-实验六全文共11页,当前为第1页。实验六 多态性 C++上机实验报告-实验六全文共11页,当前为第1页。 C++上机实验报告-实验六全文共11页,当前为第1...
C++课程设计报告--酒店管理系统.docxC++课程设计报告--酒店管理系统.docxC++课程设计报告--酒店管理系统.docxC++课程设计报告--酒店管理系统.docxC++课程设计报告--酒店管理系统.docxC++课程设计报告--酒店管理系统....
【C++上机实验课件】-1-9章实验指导-PDF.rar
建立一个单文档界面应用程序SDI、多文档应用程序、基于对话框的应用框程序、
图书管理系统--c++-数据结构实验报告.doc
DES_加密解密算法的C++实现--实验报告.doc
本资源为C++实验1-13,包含完整程序、注释、报告非常适合初学者学习、研究,具体如下: 实验1-熟悉Visual C++编程环境 实验2-利用函数编程 实验3-指针与引用的编程 实验4-类与对象的编程 实验5-构造函数与析构函数的...
数据结构实验----约瑟夫环 C++ 贵在文档(即实验报告)
动态规划法解决0-1背包问题,非常实用,课程实验经常用到
C++上机实验报告-实验五全文共7页,当前为第1页。C++上机实验报告-实验五全文共7页,当前为第1页。实验五 继承与派生 C++上机实验报告-实验五全文共7页,当前为第1页。 C++上机实验报告-实验五全文共7页,当前为第1...
《C++程序设计》实验报告-实验三.docx
C++上机实验报告-实验三全文共13页,当前为第1页。C++上机实验报告-实验三全文共13页,当前为第1页。实验三类与对象 C++上机实验报告-实验三全文共13页,当前为第1页。 C++上机实验报告-实验三全文共13页,当前为第1...
c++面向对象课程设计报告---学生成绩管理系统
利用虚函数实现的多态性来求四种几何图形的面积之和。这四种几何图形是:三角形、矩形、正方形和圆。几何图形的类型可以通过构造函数或通过成员函数来设置。