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);
} 展开
#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);
} 展开
2个回答
展开全部
//你完全可以用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);
}
展开全部
#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;
}
追问
能不能改下我自己写的那个。。这个我在网上也查到过。。然而并没有什么用。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询