紧急求助C++问题,快速解决另加高分。

2025-03-04 18:00:43
推荐回答(1个)
回答1:

完全按楼主要求,代码如下:
#include
#include
using namespace std;
class Message
{
public:
Message(char* p)
{
s = new char[100];
strcpy(s, p);
}
~Message()
{
delete []s;
}
protected:
char* s;
};

class Encrypt:public Message
{
public:
Encrypt(char* p):Message(p)
{
str = new char[100];
strcpy(str, p);
}
~Encrypt()
{
delete []str;
}
void fun();
void show();
operator char*()
{
return str;
}
private:
char* str;
};

class Decrypt:public Message
{
public:
Decrypt(char* p):Message(p)
{
str = new char[100];
strcpy(str, p);
}
~Decrypt()
{
delete []str;
}
void fun();
void show();
private:
char* str;
};

void Encrypt::fun()
{
int i;
for (i = 0; i != strlen(str); ++i)
{
if (str[i] >= 'A' && str[i] <= 'P')
{
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 Encrypt::show()
{
cout << str;
cout << endl;
}

void Decrypt::fun()
{
int i;
for (i = 0; i != strlen(str); ++i)
{
if (str[i] >= 'a' && str[i] <= 'p')
{
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 Decrypt::show()
{
cout << str;
cout << endl;
}

void main()
{
char input[100];
cout << "输入字符串:" << endl;
gets(input);
Encrypt e(input);
cout << "原文为:";
e.show();
e.fun();
cout << "密文为:";
e.show();
Decrypt d((char*)e);
cout << "密文为:";
d.show();
d.fun();
cout << "解密后为:";
e.show();
}