求助!C++编程题!重金 求解!
编程要求:译密码。为使电文保密,往往按照一定规律将电文转换成密码,收报人再按照约定的规律将其译回原文。例如,可以按以下规律将电文变成密码:将字母A变成E,a变成e,即变成...
编程要求:译密码。为使电文保密,往往按照一定规律将电文转换成密码,收报人再按照约定的规律将其译回原文。例如,可以按以下规律将电文变成密码:将字母A变成E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。字母按上述规律转换,非字母字符不变。如〃Wonderful!〃转换为〃Asrhivjyp!〃。输入一行字符,要求输出其相应的密码。
展开
4个回答
展开全部
/*********************************************************************
一个文本串可用事先给订购的字母映射表进行加密。例如:设字母映射表为:
abcdefghijklmnopqrstuvwxyz
ngzqtcobmuhelkpdawxfyivrsj
则字符串"encrypt"被加密为"tkzwsd"。
试写一个算法将输入的文本串进行加密后输出;
**********************************************************************/
/*
int main ( int argc ,char*argv[])
{
char szInput[100] ="";
char szAlphabet[] ="abcdefghijklmnopqrstuvwxyz";//字母表
char szMap[] ="ngzqtcobmuhelkpdawxfyivrsj";//映射字母表
unsigned int i =0;
unsigned int j =0;
printf( "请输入一段信息:");
gets( szInput);
for( i=0 ;i< strlen(szInput) ;i++)
{
for( j=0 ;j<26 ;j++)
{
if(szInput[i] == szAlphabet[j])
{
szInput[i] = szMap[j];
break;
}
}
}
printf( "加密后的信息为:");
puts( szInput);
return 0;
}
这是我以前用C语言写的,不管你要怎么写你的密码,只要把上面的映射表改一下就行了。用C++的话,把映射表作为私有成员封装一个类就可以了。解码反过来写就行了,今天没时间了。。楼主自己看吧,比较容易实现的,如果不明白给我发消息吧
一个文本串可用事先给订购的字母映射表进行加密。例如:设字母映射表为:
abcdefghijklmnopqrstuvwxyz
ngzqtcobmuhelkpdawxfyivrsj
则字符串"encrypt"被加密为"tkzwsd"。
试写一个算法将输入的文本串进行加密后输出;
**********************************************************************/
/*
int main ( int argc ,char*argv[])
{
char szInput[100] ="";
char szAlphabet[] ="abcdefghijklmnopqrstuvwxyz";//字母表
char szMap[] ="ngzqtcobmuhelkpdawxfyivrsj";//映射字母表
unsigned int i =0;
unsigned int j =0;
printf( "请输入一段信息:");
gets( szInput);
for( i=0 ;i< strlen(szInput) ;i++)
{
for( j=0 ;j<26 ;j++)
{
if(szInput[i] == szAlphabet[j])
{
szInput[i] = szMap[j];
break;
}
}
}
printf( "加密后的信息为:");
puts( szInput);
return 0;
}
这是我以前用C语言写的,不管你要怎么写你的密码,只要把上面的映射表改一下就行了。用C++的话,把映射表作为私有成员封装一个类就可以了。解码反过来写就行了,今天没时间了。。楼主自己看吧,比较容易实现的,如果不明白给我发消息吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <cctype>
#include <string>
#include <algorithm>
using namespace std;
char Code( char c )
{
if ( !isalpha( c ) ) /* 如果不是字母 */
throw string( "Not alpha " );
if ( islower( c ) ) /* 小写字母 */
c = ( c - 'a' + 4 ) % 26 + 'a';
else if ( isupper( c ) ) /* 大写字母 */
c = ( c - 'A' + 4 ) % 26 + 'A';
else /* 其它错误 */
throw string( "Unexpected error" );
return c;
}
int main( )
{
string strCoding, strCoded;
cout << "Input a code string: " << endl;
cin >> strCoding;
strCoded.resize( strCoding.size( ) );
try
{
transform( strCoding.begin( ), strCoding.end( ), strCoded.begin( ), Code);
}
catch( string str )
{
cout << str << endl;
system( "pause" );
exit( 0 );
}
cout << "After Coding, the string is:\n" << strCoded << endl;
system( "pause" );
}
#include <cctype>
#include <string>
#include <algorithm>
using namespace std;
char Code( char c )
{
if ( !isalpha( c ) ) /* 如果不是字母 */
throw string( "Not alpha " );
if ( islower( c ) ) /* 小写字母 */
c = ( c - 'a' + 4 ) % 26 + 'a';
else if ( isupper( c ) ) /* 大写字母 */
c = ( c - 'A' + 4 ) % 26 + 'A';
else /* 其它错误 */
throw string( "Unexpected error" );
return c;
}
int main( )
{
string strCoding, strCoded;
cout << "Input a code string: " << endl;
cin >> strCoding;
strCoded.resize( strCoding.size( ) );
try
{
transform( strCoding.begin( ), strCoding.end( ), strCoded.begin( ), Code);
}
catch( string str )
{
cout << str << endl;
system( "pause" );
exit( 0 );
}
cout << "After Coding, the string is:\n" << strCoded << endl;
system( "pause" );
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
int main()
{
int l;
char s[512];
cout<<"输入明文:";
gets(s);
cout<<"输入替换步长(如A用E代换则替换步长为4):";
cin>>l;
l = l%26 + 26;
char c;
for (int i=0; i<strlen(s);i++)
{
c = s[i];
if( c >= 'A' && c <= 'Z')
s[i] = (s[i]-'A'+l)%26 + 'A';
else if( c>= 'a' && c <= 'z')
s[i] = (s[i]-'a'+l)%26 + 'a';
}
puts(s);
return 1;
}
using namespace std;
int main()
{
int l;
char s[512];
cout<<"输入明文:";
gets(s);
cout<<"输入替换步长(如A用E代换则替换步长为4):";
cin>>l;
l = l%26 + 26;
char c;
for (int i=0; i<strlen(s);i++)
{
c = s[i];
if( c >= 'A' && c <= 'Z')
s[i] = (s[i]-'A'+l)%26 + 'A';
else if( c>= 'a' && c <= 'z')
s[i] = (s[i]-'a'+l)%26 + 'a';
}
puts(s);
return 1;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void
copystr(char
*p1,char
*
p2,int
m)
{
int
n=0;
m-=1;
while(p1[m]
!=
'\0')
{
p2[n++]=p1[m++];
}
p2[n]='\0';
}
很简单吧,好好学习,天天向上
copystr(char
*p1,char
*
p2,int
m)
{
int
n=0;
m-=1;
while(p1[m]
!=
'\0')
{
p2[n++]=p1[m++];
}
p2[n]='\0';
}
很简单吧,好好学习,天天向上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询