谁能帮忙看下凯撒密码啊
谁能帮我用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