C++编程问题:实现字典类

补充下列代码#include<string>#include<iostream>usingnamespacestd;classDictionary{public:priv... 补充下列代码

#include <string>
#include <iostream>
using namespace std;

class Dictionary{
public:

private:

};

int main() {
Dictionary dictionary;

// initialize dictionary
while (true) {
string english;
cin >> english;
if (english == "end") break;
string chinese;
cin >> chinese;
dictionary.put(english, chinese);
}

// lookup dictionary
while (true) {
string english;
cin >> english;
if (english == "end") break;
cout << dictionary.get(english) << endl;
}
}
//输入输出
/*
computer 计算机
calculator 计数器
university 大学
pizza 比萨饼
end
calculator
pizza
computer
university
end
样例输出
计数器
比萨饼
计算机
大学
*/
展开
 我来答
留一户
2014-06-06 · 超过12用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:25.6万
展开全部
#include <string>
#include <iostream>
#include <stdio.h>
using namespace std;
#define MAXN  100

class Dictionary{
public:
        Dictionary() {cnt=0;};   //初始词条数为0
        void put(string a,string b)
        {
            e[cnt]=a;
            c[cnt++]=b;         //存入一条词条
        }
        string get(string a)
        {
            for(int i=0;i<cnt;i++)
                if(e[i]==a) {
                   return c[i];
                }
        }
    private:
        int cnt;       //词条数
        string e[MAXN];   //英语单词
        string c[MAXN];   //中文解释(下表与e数组对应)

};

int main()
{
   //freopen("in.txt","r",stdin);
   Dictionary dictionary;

   // initialize dictionary
   while (true) {
       string english;
       cin >> english;
       if (english == "end") break;
       string chinese;
       cin >> chinese;
       dictionary.put(english, chinese);
   }

   // lookup dictionary
   while (true) {
       string english;
       cin >> english;
       if (english == "end") break;
       cout << dictionary.get(english) << endl;
    }
    return 0;
}

找不到的情况,我不知道你的题目是怎么规定的,所以没有写

另外不知道你能存多少词条,所以先定了MAXN=100条词条,也就最多能存100

另外在查找的时候用的是暴搜,因为不知道你对搜索性能是否有要求

测试过了,样例能通过

更多追问追答
追问
我想请问假如把找不到的情况的情况包含在内输出找不到,怎么弄,我尝试修改了一下你的,结果程序崩溃,求正确写法~~

因为刚才点错了,不能给你积分了,但希望你可以帮帮忙~~
追答
#include <string>
#include <iostream>
#include <stdio.h>
using namespace std;
#define MAXN  100

class Dictionary{
    public:
        Dictionary() {cnt=0;};   //初始词条数为0
        void put(string a,string b)
        {
            e[cnt]=a;
            c[cnt++]=b;         //存入一条词条
        }
        string get(string a)    //获得对应的中文解释
        {
            for(int i=0;i<cnt;i++)
                if(e[i]==a) {
                   return c[i];   //查找成功,返回对应的中文解释
                }
            return "no result~";  //没有找到对应的单词,这里只是个标记(标记出错了),你可以用其他的提示
        }
    private:
        int cnt;       //词条数
        string e[MAXN];   //英语单词
        string c[MAXN];   //中文解释(下标与e数组对应)

};

不好意思,今天才看到

出错处理就是在get里面加了一句 return,错误的出口

冰旋华影
推荐于2016-08-22 · TA获得超过549个赞
知道小有建树答主
回答量:673
采纳率:0%
帮助的人:288万
展开全部
#include <string>
#include <iostream>
using namespace std;
static int count=0;
class Dictionary{
public:
void put(string eng,string chi){
en[count]=eng;
ch[count]=chi;
count++;
}
string get(string eng){
for(int i=0;i<count;i++){
if(eng.compare(en[i])==0){
return ch[i];
}
}
cout<<"没有找到"<<endl;
}
private:
string en[10],ch[10];
}; 

int main() {
Dictionary dictionary;
 
// initialize dictionary
while (true) {
string english;
cin >> english;
if (english == "end") break;
string chinese;
cin >> chinese;
dictionary.put(english, chinese);
}
 
// lookup dictionary
while (true) {
string english;
cin >> english;
if (english == "end") break;
cout << dictionary.get(english) << endl;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式