📄 playfair.cpp
字号:
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include "ctype.h"
#define N 100
int main()
{
int i,T=0;
char error,in[10*N];
printf("Please enter the cypher:\n");
scanf("%s",in);
for(i=0;in[i]!='\0';i++)
{
in[i]=toupper(in[i]);
T++;
}
for(i=0;in[i]!='\0';i++)
{
if(in[i]=='J')
{
in[i]='I';
}
if(in[i]=='X'&&in[i+1]=='X')
{
printf("\nWARNING! Illigle input as double or more series of 'X' occured !\n\n");
exit(0);
}
if(in[i+1]==in[i])
{
in[i+1]='X';
T++;
for(int j=T+1;j>i+1;j--)
in[j]=in[j-1];
in[i+2]=in[i];
}
}
printf("\n\nafter encode,the cryptograph outputs bellow:\n\n");
char array[5][5]={'Y','U','O','F','A','V','P','G','B','N','Q',
'H','C','M','T','I','D','L','S','X','E','K','R','W','Z'};
for(i=0;in[i]!='\0';i=i+2)
{
int x1=0,x2=0,y1=0,y2=0;
if(in[i+1]=='\0')
{
in[i+1]='X';
in[i+2]='\0';
T++;
if(in[i]=='X')
{
printf("\nWARNING! error occured !\n");
printf("maybe you inputed the last letter as 'X' & it's ranked as odd\n\n");
exit(0);
}
}
for(int m=0;m<5;m++)
{
for(int n=0;n<5;n++)
{
if(in[i]==array[m][n])
{
x1=m;
y1=n;
}
else if(in[i+1]==array[m][n])
{
x2=m;
y2=n;
}
}
}
if((x1==x2)&&(y1!=y2))
{
y1=y1+1;
y2=y2+1;
if(y1>4)
y1=0;
if(y2>4)
(y2)=0;
}
else if((x1!=x2)&&(y1==y2))
{
x1=x1+1;
x2=x2+1;
if(x1==5)
x1=0;
if(x2==5)
x2=0;
}
else
{
int temp;
temp=y1;
y1=y2;
y2=temp;
}
cout<<array[x1][y1]<<array[x2][y2];
}
cout<<endl<<endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -