十六周实验报告(三)

来源:互联网 发布:安卓软件接口 编辑:程序博客网 时间:2024/05/18 18:16
/*【任务 3】电子词典 做一个简单的电子词典。在文件 dictionary.txt 中,保存的是英汉对照的一个词典,词汇量近 8000 个,英文、中文释义与词性间用’\t’隔开。建一个表示词条的类 Word,Word 类的一个对象可以描述一个词,类对象数组可以存储词库。将文件中的内容读到对象数组中,由用户输入英文词,显示中文释义。 提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。 拓展 1(选做):允许用户运行程序后,连续地查词典,直到输入”0000”结束。 *//* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:   dictionary.cpp                           * 作    者:   苗向前     * 完成日期:    2012  年   6    月   10   日* 版 本 号:       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查无此词!请输入要查的单词keykey     钥匙,关键,答案        n.请输入要查的单词0000请按任意键继续. . .*/


 

原创粉丝点击