第14周上机实践项目3——电子词典

做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文、中文释义与词性间用’\t’隔开。

代码

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
class dictionary;
class Word
{
public:
    Word(){}
    void set(string e,string c,string w)
    {
        english=e;
        chinese=c;
        word_class=w;
    }
    friend class dictionary;
private:
    string english;
    string chinese;
    string word_class;
};
class dictionary
{
public:
    dictionary();
    void searchword(string en);
    int midsearch(int low,int high,string key);
private:
    int wordNum;
    Word word[8000];
};
dictionary::dictionary()
{
    fstream infile;
    string e,c,w;
    wordNum=0;
    infile.open("dictionary.txt",ios::in);
    if(!infile)
    {
        cout<<"dictionary.txt can't open"<<endl;
        exit(1);
    }
    while(!infile.eof())
    {
        infile>>e>>c>>w;
        word[wordNum].set(e,c,w);
        wordNum++;
    }
    infile.close();
}
int dictionary::midsearch(int low,int high,string key)
{
    int mid;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(word[mid].english==key)
            return mid;
        else
            if(word[mid].english>key)
            high=mid-1;
        else
            low=mid+1;
    }
    return -1;
}
void dictionary::searchword(string en)
{
    int key=midsearch(0,wordNum-1,en);
    if(key)
        cout<<word[key].english<<"-->"<<word[key].word_class<<"\t"<<word[key].word_class<<endl;
    else
        cout<<"查无此词!"<<endl;
}
int main( )
{
    dictionary d;
    string w;
    cout<<"请输入要查找的单词:"<<endl;
    while(cin>>w)
    {
        d.searchword(w);
    }
    return 0;
}
时间: 2024-10-09 22:54:34

第14周上机实践项目3——电子词典的相关文章

第14周上机实践项目2——用文件保存的学生名单

(1)定义学生类,其中包含姓名.C++课.高数和英语成绩及总分数据成员. (2)用对象数组进行存储学生的成绩,读入成绩并计算总分:将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中. 代码 #include <iostream> #include <fstream> #include <cstdlib> using namespace std; //定义学生类 class Student { public: //声明必要的成员函数 Stude

第14周上机实践项目1——小玩文件(1)

(1)下面程序的功能是统计文本文件abc.txt中的字符个数 代码 #include <iostream> #include <cstdlib> #include <fstream> using namespace std; int main() { fstream file; file.open("abc.txt", ios::out); // (2) if(!file) { cout<<"abc.txt can¡¯t ope

第14周上机实践项目1——小玩文件(2)

将文本文件abc.txt中的所有行加上行号后写到newabc.txt文件中 代码 #include <iostream> #include <cstdlib> #include <fstream> using namespace std; int main() { fstream outfile,infile; infile.open("abc.txt",ios::in); // (1) if(!infile) { cout<<"

第14周上机实践项目1——小玩文件(3)

(3)用键盘输入文件名,统计输出文件中每个字母.数字字符出现的次数: 代码 #include <iostream> #include <cstdlib> #include <fstream> #include <string> using namespace std; int main() { fstream infile; char textname[80]; gets(textname); infile.open(textname,ios::in); i

第14周上机实践项目1——折腾二维数组(1)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 27 日 * 版 本 号:v1.0 * * 问题描述: 按行序优先输出数组元素. * 输入描述:后两列元素. * 程序输出:数组元素: */ #include <iostream> using namespace std; int main() { int i,x,y; int a[

第14周上机实践项目1——折腾二维数组(2)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 27 日 * 版 本 号:v1.0 * * 问题描述: 按列序优先输出. * 输入描述:后两列元素. * 程序输出:数组元素: */ #include <iostream> using namespace std; int main() { int i,x,y; int a[5][4

第14周上机实践项目1——折腾二维数组(3)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 27 日 * 版 本 号:v1.0 * * 问题描述: 倒序输出. * 输入描述:后两列元素. * 程序输出:数组元素: */ #include <iostream> using namespace std; int main() { int i,x,y; int a[5][4]=

第14周上机实践项目1——折腾二维数组(4)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 27 日 * 版 本 号:v1.0 * * 问题描述: 输出所有偶数. * 输入描述:后两列元素. * 程序输出:偶数数组元素: */ #include <iostream> using namespace std; int main() { int i,x,y; int a[5][

第14周上机实践项目1——折腾二维数组(5)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 27 日 * 版 本 号:v1.0 * * 问题描述: 输出下标之和为3的倍数的元素. * 输入描述:后两列元素. * 程序输出:下标之和为3的倍数的元素: */ #include <iostream> using namespace std; int main() { int i,