编一道c++题目,错误多多,帮忙看一下了,不胜感激!
//加密就是大写英文字母循环后移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();
} 展开
#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();
}