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
样例输出
计数器
比萨饼
计算机
大学
*/ 展开
#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
样例输出
计数器
比萨饼
计算机
大学
*/ 展开
2个回答
展开全部
#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,错误的出口
展开全部
#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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询