编一道c++题目,错误多多,帮忙看一下了,不胜感激!

//设计一个程序对电文中的英文字符进行加密和解密,//加密就是大写英文字母循环后移10位,小写英文字母循环后移10位,其他字符保持不变,//如A变为k,a变为q#incl... //设计一个程序对电文中的英文字符进行加密和解密,
//加密就是大写英文字母循环后移10位,小写英文字母循环后移10位,其他字符保持不变,
//如A变为k,a变为q
#include<iostream.h>
#include<string.h>
class Message{ //表示原电文
protected:
char *s; //表示电文
public:
Message(char*p){
s=new char[strlen(p)+1];
strcpy(s,p);
}
~Message(){delete s;}
};
class Encrypt:public Message{ //对原电文进行加密
char*str; //表示加密后的电文
public:
Encrypt(char*p):Message(p){
str=new char[strlen(p)+1];
}
void fun(){ //对原文加密后得到密文
int len=strlen(s);
strcpy(str,s);
for(int i=0;i<len;i++){
if(str[i]>'A'&&str[i]<'P')str[i]+=10;
if(str[i]>'Q'&&str[i]<'Z')str[i]-=16;
if(str[i]>'a'&&str[i]<'j')str[i]+=16;
if(str[i]>'k'&&str[i]<'z')str[i]-=10;
}
}
void show(){
cout<<"原文为:"<<s<<'\n';
cout<<"密文为:"<<str<<'\n';

}
operator char*(Encrypt &){return str;} //题目要求是:operator char*():把Encrypt的对象换成加密字符串。
~Encrypt(){delete str;}
};
class Decrypt:public Message{ //对加密后的电文进行解密
char*str; //表示解密后的电文
public:
Decrypt(char*p):Message(p){ //用p(Encrypt类对象的数据成员str)初始化密文s
str=new char[strlen(p)+1];
}
void fun(){ //对密文进行解密
int len=strlen(s);
strcpy(str,s);
for(int i=0;i<len;i++){
if(str[i]>'A'&&str[i]<'J')str[i]+=16;
if(str[i]>'K'&&str[i]<'Z')str[i]-=10;
if(str[i]>'a'&&str[i]<'p')str[i]+=10;
if(str[i]>'q'&&str[i]<'z')str[i]-=16;
}
}

void show(){
cout<<"密文为:"<<s<<'\n';
cout<<"解密后为:"<<str<<'\n';
}
~Decrypt(){delete str;}
};
void main(){
char p1[41]={"I am Tom,8:00 tonight at the gate to see"};
Encrypt e(p1);
e.fun();
e.show();
Decrypt d(char*e);
d.fun();
d.show();
}
展开
 我来答
緗虞帱
2011-10-02 · TA获得超过578个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:340万
展开全部

#include<iostream.h>

#include<string.h>

class Message

{     //表示原电文

protected:

char *s;      //表示电文

public:

Message(char*p)

{

s=new char[strlen(p)+1];

strcpy(s,p);

}

~Message()

{

delete s;

}

};

class Encrypt:public Message

{     //对原电文进行加密

char*str;                   //表示加密后的电文

public:

Encrypt(char*p):Message(p)

{

str=new char[strlen(p)+1];

}

void fun()

{         //对原文加密后得到密文

int len=strlen(s);

    strcpy(str,s);

for(int i=0;i<len;i++)

{

if(str[i]>='A'&&str[i]<'Q')str[i]+=10;

else if(str[i]>='Q'&&str[i]<='Z')str[i]-=16;

else if(str[i]>='a'&&str[i]<'j')str[i]+=16;

else if(str[i]>='k'&&str[i]<='z')str[i]-=10;

}

}

    void show()

{

cout<<"原文为:"<<s<<'\n';

cout<<"密文为:"<<str<<'\n';

}

    char* operator *(Encrypt &)

{

return str;

}  //题目要求是:operator char*():把Encrypt的对象换成加密字符串。

~Encrypt(){delete str;}

};

class Decrypt:public Message

{     //对加密后的电文进行解密

char* str;                     //表示解密后的电文

public:

    Decrypt(char*p):Message(p)

{    //用p(Encrypt类对象的数据成员str)初始化密文s

str=new char[strlen(p)+1];

}

void fun()

{                  //对密文进行解密

int len=strlen(s);

    strcpy(str,s);

for(int i=0;i<len;i++)

{

if(str[i]>='A'&&str[i]<'J')str[i]+=16;

else if(str[i]>='J'&&str[i]<='Z')str[i]-=10;

else if(str[i]>='a'&&str[i]<'p')str[i]+=10;

else if(str[i]>='q'&&str[i]<='z')str[i]-=16;

}

}

   void show()

   {

cout<<"密文为:"<<s<<'\n';

cout<<"解密后为:"<<str<<'\n';

   }

   ~Decrypt(){delete str;}

};

void main()

{

char p1[41]={"I am Tom,8:00 tonight at the gate to see"};

Encrypt e(p1);

e.fun();

e.show();

Decrypt d(e*e);

d.fun();

d.show();

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式