📄 caesarcaesarencryptionalgorithm.txt
字号:
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
int Wide(int b);//列阵中每行或每列的字母个数
void Square(int wide,string file);//列出方阵
void Mi(int wide,string file);//用密文形式输出
int main()
{
//建立文件连接
ifstream ReadFile;
ReadFile.open("D:\\W_DeadandGone.txt");
//读取文件中字母个数
string file;
getline(ReadFile,file);
int b=file.size();
int wide=Wide(b);
//如果不是完全平方,在后面补多少个*
int star=wide*wide-b;
string filestar;
for(int q=0;q<star;q++)
{
filestar+='*';
}
file+=filestar;
//分别用文件输出方阵和密文
Square(wide,file);
Mi(wide,file);
cin.get();
}
int Wide(int a)
{
double temp=a;//用double形式读取文字数
for(int i=0;i<100000000000;i++) //运用枚举法找到距离文字数最近的完全平方数并返回该数的平方根
{
for(double o=temp;o<100000;o++)
{
if(sqrt(o)==i)
{
return i;
}
}
}
}
void Square(int wide,string file) //这里的算法不好注释,仔细看吧
{
ofstream OutFile;
OutFile.open("D:\\W_DeadandGone_k.txt");
for(int i=0;i<wide;i++)
{
OutFile<<endl;
for(int f=wide;f>0;f--)
{
OutFile<<file[(wide*(f-1))+i];
}
}
}
void Mi(int wide,string file) //与Square函数基本相同,不过用一行输出,形成密文
{
ofstream OutFile;
OutFile.open("D:\\W_DeadandGone_m.txt");
for(int i=0;i<wide;i++)
{
for(int f=wide;f>0;f--)
{
OutFile<<file[(wide*(f-1))+i];
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -