14.3英语字典(没创建,只是看到运行出来了OPEN ERROR)

本文介绍了一个使用C++实现的简易电子词典程序。该程序能够通过二分查找法高效地搜索近8000个英语单词的中文释义及词性,并提供了用户友好的交互界面。
dictionary.out(dictionary.chsearch(english)); 这一行真好玩。<img alt="微笑" src="http://static.blog.youkuaiyun.com/xheditor/xheditor_emot/default/smile.gif" /><img alt="吐舌头" src="http://static.blog.youkuaiyun.com/xheditor/xheditor_emot/default/tongue.gif" />






//做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文、中文释义与词性间用’\t’隔开。
//(1)编程序,由用户输入英文词,显示词性和中文释义。
//提示1:如果要用OOP完成这个词典(当然也可以用OO方法实现),可以定义一个Word类表示一个词条,其中的数据成员string english; 表示英文单词,string chinese;表示对应中文意思,string word_class;表示该词的词性;
//还可以定义一个Dictionary类,用来表示词典,其中Word words[8000]成员表示词典中的词条,int wordsNum;表示词典中的词条数,在构造函数中从文件读入词条,而专门增加一个成员函数用于查单词。
//提示2:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
//提示3:这样的项目,最好用多文件的形式组织
#include <iostream>
#include <Cstring>
#include <cstdlib>
#include <fstream>
using namespace std;
class Word
{
public:
    void get(string e,string c,string w)
    {
        English=e;
        Chinese=c;
        Word_class=w;
    }
    string putE()
    {
        return English;
    }
    string putC()
    {
        return Chinese;
    }
    string putW()
    {
        return Word_class;
    }
private:
    string English;
    string Chinese;
    string Word_class;
};
class Dictionary
{
private:
    Word word[8000];
    int wordNum;
public:
    Dictionary();
    int  chsearch(string english);
    void out(int );
};
Dictionary::Dictionary()
{
    wordNum=0;
    string e;string c;string w;
    ifstream infile("dictionary.txt",ios::in);
    if(!infile)
    {
        cerr<<"open error"<<endl;
        exit(1);
    }
    while(!infile.eof())
    {
        infile>>e>>c>>w;
        word[wordNum].get(e,c,w);
        wordNum++;
    }
}
int  Dictionary::chsearch(string english)
{
    int low=0;
    int high=wordNum;
    int mid=wordNum/2;
    while(high>low)
    {
        if(word[mid].putE()<english)
            {
                low=mid;
                mid=(low+high)/2;
            }
        else
            if(word[mid].putE()==english)
        {
            return mid;
            break;
        }
        else
        {
            high=mid;
            mid=(low+high)/2;
        }
    }
    return -1;
}
void Dictionary::out(int number)
{
    if(number==-1)
    {
        cout<<"对不起,未查询到您输入的单词"<<endl;
    }
    else
    {
        cout<<"您查询的单词的汉语意思是:"<<word[number].putC()<<"        词性为:"<<word[number].putW()<<endl;
    }
}
int main()
{
    Dictionary dictionary;
    string english;
    cout<<"请输入您要查询的单词,输入0结束"<<endl;
    while(cin>>english)
    {
        dictionary.out(dictionary.chsearch(english));
        cout<<"请输入您要查询的单词"<<endl;
    }
    cout<<"谢谢使用,再见"<<endl;
    return 0;
}


使用VBA实现下面的功能: 1. Excel 版本为 2016版,处理大据量。工作表事件代码与主代码分开显示。 2. 打开的Excel含有History.Cost 和 DataBase 两个工作表,下述History.Cost工作表简称为HC表,DataBase工作表简称为DB表。 3. HC表作为日常操作表格,据经常会变动。其中第E、F、G、U、W、AF、AI列均为输入,空值默认为0,如果有非输入提示报错。 4. DB表作为基础据表格,只需每次打开工作表的时候加载所需据即可。 5. HC表的A列和B列进行重复元格标示,即只要A列和B列区域有重复据,就用颜色(250,128,114)对重复的元格进行标示。 6. HC表的A列和B列元格有新据录入后,自动更新重复标示功能。 7. 从HC表的第2行开始,判断A列是否有据,如过有据,则开始对HC表第2行开始的需要赋值的各列按下列规则赋值 7.1 使用HC表I列的据对DB表B列进行据查询 7.2 使用HC表E列的据对DB表C列进行据查询 7.3 记录同时符合7.1和7.2规则的DB表D列至R列的据 7.4 每次点击文件保存按钮时,启动赋值规则。 8. HC表第J列(重量计算)赋值规则: 8.1 计算HC表E列和H列的乘积 8.2 将J列赋值为规则7.3记录据的DB表D列与规则8.1的乘积 9. HC表第L列(重量价)赋值规则: 9.1 将L列赋值为规则7.3记录据的DB表E列据 10. HC表第M列(材料费用)赋值规则: 10.1 调取规则7.3记录据的DB表H列据 10.2 如果规则10.1据为字符W,M列赋值为HC表J列、K列和L列的乘积 10.3 如果规则10.1据为字符S,M列赋值为HC表H列、K列和L列的乘积 11. HC表第N列(喷涂价)赋值规则: 11.1 判断HC表C列内是否含有NPT字符 11.2 判断HC表P列内是否有值 11.3 如果规则11.1或规则11.2 任一判断为真,则N列赋值为0; 11.4 如果规则11.3不成立,则N列赋值为规则7.3记录据的DB表F列据 12. HC表第O列(喷涂费)赋值规则: 12.1 计算HC表第G列除以1000后的值 12.2 如果HC表B列不为空,则运行规则12.3;如果HC表B列为空,则运行规则12.4 12.3 使用HC表B列据对DB表Y列进行据匹配,如果有匹配结果,则返回DB表AB列据,并将HC表O列赋值为规则12.1与DB表AB列据的乘积。如果有匹配结果则运行规则12.4 12.4 使用HC表C列据对DB表Y列进行据匹配,如果有匹配结果,则返回DB表AB列据,并将HC表O列赋值为规则12.1与DB表AB列据的乘积。如果有匹配结果则运行规则12.5 12.5 如果规则12.3与规则12.4均有匹配结果,将HC表O列赋值为HC表H列与N列的乘积 13. HC表第T列(激光切割价)赋值规则: 13.1 将HC表T列赋值为规则7.3记录据的DB表I列14. HC表第V列(切割费)赋值规则: 14.1 计算HC表T列与HC表U列的乘积 14.2 如果HC表B列不为空,则运行规则14.3;如果HC表B列为空,则运行规则14.4 14.3 使用HC表B列据对DB表Y列进行据匹配,如果有匹配结果,则返回DB表AC列据,并将HC表V列赋值为规则14.1与DB表AC列据之和。如果有匹配结果则运行规则14.4 14.4 使用HC表C列据对DB表Y列进行据匹配,如果有匹配结果,则返回DB表AC列据,并将HC表V列赋值为规则14.1与DB表AC列据之和。如果有匹配结果则运行规则14.5 14.5 如果规则12.3与规则12.4均有匹配结果,将HC表V列赋值为规则14.1的计算结果 15. HC表第X列(折弯价)赋值规则: 15.1 HC表W列大于零,运行此赋值规则 15.2 规定DB表第S列的各行为以下值500、1000、2000、3000、3200、3300中的任意一个 15.3 如果HC表第F列和G列均有据,用变量名MAXL记录F列与G列的最大值;否则将HC表X列赋值为0 15.4 使用规则MAXL与规则15.2的所列值进行比较,并按下列比较规则记录比较结果: 15.4.1 MAXL<=500,记录所有DB表S列据为500的DB表T列与U列据 15.4.2 500<MAXL<=1000,记录所有DB表S列据为1000的DB表T列与U列据 15.4.3 1000<MAXL<=2000,记录所有DB表S列据为2000的DB表T列与U列据 15.4.4 2000<MAXL<=3000,记录所有DB表S列据为3000的DB表T列与U列据 15.4.5 3000<MAXL<=3200,记录所有DB表S列据为3200的DB表T列与U列据 15.4.6 MAXL>3200,记录所有DB表S列据为3300的DB表T列与U列据 15.5 使用HC表的E列对规则15.4所记录据的DB表T进行据匹配,匹配成功后返回DB表U列的据 15.6 HC表X列赋值为MAXL与规则15.5返回据的乘积 16. HC表第Z列(购买件费用)赋值规则: 16.1 计算HC表第G列除以1000后的值 16.2 如果HC表B列不为空,则运行规则16.3;如果HC表B列为空,则运行规则16.5 16.3 使用HC表B列据对DB表W列进行据匹配,如有匹配结果,则HC表Z列赋值为DB表X列据。如果有匹配结果,则继续运行规则16.3 16.4 使用HC表B列据对DB表AA列进行据匹配,如有匹配结果,则HC表Z列赋值为规则16.1计算值DB表AB列据的乘积。如果有匹配结果,则继续运行规则16.5 16.5 使用HC表C列据对DB表W列进行据匹配,如有匹配结果,则HC表Z列赋值为DB表X列据。如果有匹配结果,则继续运行规则16.6 16.6 使用HC表C列据对DB表AA列进行据匹配,如有匹配结果,则HC表Z列赋值为规则16.1计算值DB表AB列据的乘积。如果有匹配结果,则赋值为0 17. HC表第AC列(焊接价)赋值规则: 17.1 使用HC表AB列据对DB表AF列进行据匹配,HC表AC列赋值为DB表AG列的返回据 18. HC表第AG列(激光穿孔)赋值规则: 18.1 HC表AG列赋值为规则7.3记录据的DB表J列据 19. HC表第AJ列(钳工价)赋值规则: 19.1 使用HC表AI列据对DB表K1至R1进行据匹配 19.2 HC表AJ列赋值为规则19.1所匹配列和7.3记录据的DB表匹配结果 20. HC表第AL列赋值规则: 20.1 判断HC表C列内是否含有Deck字符,如有则返回规则7.3记录据的DB表H列的据;如不含有Deck字符,则赋值为0
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值