C++中类的问题,要求设计一个词典类并翻译,我的代码为何一运行就出错?

以下为全代码,求大神指教!#include<iostream.h>#include<string.h>classdictionary{char*Chinese[20];c... 以下为全代码,求大神指教!
#include<iostream.h>
#include<string.h>
class dictionary
{
char *Chinese[20];
char *English[20];
static int a;
public:
void Add(char [20],char [20]);
dictionary()
{
Add("I","我");
Add("am","是");
Add("a","一个");
Add("student","学生");
}
void translate(char p[100])
{
int i=0;
char word[20];
do{
while(p[i]!='\0')
{
word[i]=p[i];
for(int j=0;j<20;j++)
{if(strcmp(word,English[j])==0)
cout<<Chinese[j];}
i++;
}
i++;
}while(p[i]!='\0');
}
};
int dictionary::a=0;
void dictionary::Add(char we[20],char wc[20])
{
Chinese[a]=wc;
English[a]=we;
a++;
}
void main(){
dictionary X;
char words[100]="I am a student";
X.translate(words);
}
展开
 我来答
lyw0210
推荐于2016-06-20 · TA获得超过163个赞
知道小有建树答主
回答量:75
采纳率:50%
帮助的人:27.8万
展开全部
//你完全可以用string类表示字符串,既然你没这么表示,我就不帮你改成这样了 
#include<iostream>
#include<string.h>
using namespace std;//直接使用cout还是加这么一句好
class dictionary
{
 char *Chinese[20];
 char *English[20];
 static int a;
public:  
 void Add(char [20],char [20]);//形参[]里的数字没有意义 
 dictionary()
 {
  Add("I","我");
  Add("am","是");
  Add("a","一个");
  Add("student","学生");
     }
     void translate(char p[100])
  {
         int i=0,i1;//这里定义的i在下面很乱 ,我再帮你定义个i1
   char word[20];
   do
   {
    i1=0;//循环一次后i1从0开始计数,即word从word[0]开始赋值 
     while(p[i]>='a'&&p[i]<='z'||p[i]>='A'&&p[i]<='Z')
     word[i1++]=p[i++];
     word[i1]=0;//word末尾添加'\0' 
     for(int j=0;j<20;j++)//你总共都只加了4组单词就一直比到第20组?这里要好好改一改,首先指针成员构造时要初始化为0,然后要能判断后面还需不需要比较(通过指针是否为0判断),这里你自己改 
     {
if(strcmp(word,English[j])==0)
{
     cout<<Chinese[j];
     break;//找到了就别循环了 
     }
}
   }while(p[i++]!='\0');//判断p[i]后要把i增1 
     }
};
int dictionary::a=0;
void dictionary::Add(char we[20],char wc[20])
{
 Chinese[a]=wc;
 English[a]=we;
 a++;
}
int main(){
     dictionary X;
  char words[100]="I am a student";
     X.translate(words);
}
碧血玉叶花
2015-06-03 · TA获得超过4976个赞
知道大有可为答主
回答量:6154
采纳率:0%
帮助的人:1736万
展开全部
#include "stdafx.h"
#include <map>
#include <string>
#include <sstream>
#include <iostream>

using namespace std;

/*class define*/
class dic
{
private:
 map<string, string> t;
public:
 dic();
 void add(string sword, string smean);
 string trans(string sentence);
};

dic::dic()
{}

void dic::add(string sword, string smean)
{
 t.insert(pair<string,string>(sword, smean));
}

string dic::trans(string sentence)
{
 string s, sres = "";
 istringstream iss(sentence);
 map<string,string>::iterator iter=t.begin();
 int c = 0;
 while (iss>>s)
 {
  iter = t.find(s);
  if (iter == t.end())
   continue;
  sres += iter->second;
 }
 return sres;
}

/*class define ended!!*/

/*main interface */
int main(int argc, char* argv[])
{
 dic a;
 a.add("hello", "你好");
 a.add("china", "中国");

 cout<<a.trans("hello china d");

 return 0;
}
追问
能不能改下我自己写的那个。。这个我在网上也查到过。。然而并没有什么用。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式