首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪位高手能帮忙看下凯撒密码

2012-03-23 
谁能帮忙看下凯撒密码啊谁能帮我用C++写一下凯撒密码密码加密解密算法啊我写了好久,但是总是错,下面是我写

谁能帮忙看下凯撒密码啊
谁能帮我用C++写一下凯撒密码密码加密解密算法啊       我写了好久,但是总是错,下面是我写的(经过很多次乱改已经乱七八糟了)谁能帮我写一下啊。
#include <iostream.h>
#include <windows.h>
class   Casesar
{
protected:
          static   int       n;
  static   char     *ptr;
    char   *lptr;
char   *i;
char   *j;

public:
Casesar(char   *arr,int   k,int   m)
{
ptr=new   char   [m];
lptr=new   char   [m];
ptr=arr;
n=k;
cout < <ptr < <endl;
}
void   addcasesar()
{
i=lptr;
while(ptr!= '\0 ')
{
*i=(*ptr+n)%26+78;
cout < <*i < <endl;
ptr++;
i++;
}
cout < <lptr < <endl;

}
void   jiecasesar()
{
j=ptr;
while(lptr!= '\0 ')
{
*j=(*lptr-n)%26+78;
lptr++;
j++;
}
cout < <ptr < <endl;

}
~Casesar()
{

delete   []   ptr;

delete   []   lptr;
}
};
int   Casesar::n=0;
char   *   Casesar::ptr=0;
//char   *   Casesar::lptr=0;
void   main()
{
//const   MAXSIZE   20;

char   buffer[20]= "abcdef ";
Casesar   A(buffer,3,20);
A.addcasesar;


//A.jiecasesar;
//
}


[解决办法]
#include <string.h>
#include <stdio.h>
#include <malloc.h>

#define OFFSET 3

void Add(char *dec, char *src)
{
char *p = src;
for (unsigned int i = 0; i < strlen(p); i++)
{
if (*src > 'a ' && *src < 'z ')
*dec++ = (*src++ + OFFSET - 'a ') % 26 + 'a ';
else if (*src > 'A ' && *src < 'Z ')
*dec++ = (*src++ + OFFSET - 'A ') % 26 + 'A ';
else
*dec++ = *src++;
}
*dec = '\0 ';
}

void Jie(char *dec, char *src)
{
char *p = src;
for (unsigned int i = 0; i < strlen(p); i++)
{
if (*src > 'a ' && *src < 'z ')
*dec++ = (*src++ +26 - OFFSET - 'a ') % 26 + 'a ';
else if (*src > 'A ' && *src < 'Z ')
*dec++ = (*src++ +26 - OFFSET - 'A ') % 26 + 'A ';
else
*dec++ = *src++;
}
*dec = '\0 ';
}

void main()
{
char str[] = "bsf SDFerer ";

char *p = (char *)malloc(strlen(str)+1);
memset(p, 0, strlen(str)+1);

Add(p, str);
printf( "%s\n ", p);

strcpy(str, p);
Jie(p, str);
printf( "%s\n ", p);

free(p);
p = NULL;
}

没写成类的形式,用C了, 偏移自己设,暂时define 3

热点排行