首页 > 作文

C++二维数组螺旋加密信息

更新时间:2023-04-04 09:02:40 阅读: 评论:0

由题目要求可知 题目要求先创建一个r行c列的矩阵

然后输入一串字符串 字符串长度肯定小于r*c/5

由a c m的表示方式可以看出每个字符由5位的二进制位系统表示(无符号位)

那么我们首先可以先创建一个字符串类型

string a;cin>>a;

rt 字母表示它是26字母表中第几个字母

很多人第一时间想用数组11对应 或者switch语什么的秋雨句选择

但转念一想就知道太麻烦了 所以这里用字符的ascii码减去64来表示它的数字形式

转ascii码都知道 强类型转换

由于不止一个字符 为了提高代码的复用性 我们专门写个函数来返回字母的数字形式的二进制值

int bit(char a)  //定义一个将字母转换为二进制数的利润公式函数 返回二进制数{    int num=int(a)-64;    int result = 0, j = 1;while(num){result = result + j * (num % 2);num = num / 2;j = j * 10;}return result;}

二进制值有了 还得确保每个字母都能转换为5位的二进制系统

故在循环之中再套循环 像00011这种啥数据类型都不是的玩意儿 最好直接给它套数组里去 所以我们先定义个数组

然后按流程把1和0放进去 并通过while循环补全0

for(int count0=0;count0<a.size();count0++)    {        int tbits=bit(a[count0]);    //得到二进制数        digits=judge(tbits);  //判断位数 将5位2进制数补全0        times=digits-1;      //获取位数         //从而将二进制数各个位数上的数字准确的填入数组        while(digits!=5)        {            arr[s]=0;            digits++;            s++;        }        while(tbits!=0)   {   d=tbits%10; // 从最小位数开始    arr[s+times]=d;   tbits/=10;   times--;    }    s=5*(count0+1); //每个数都是5位 故让每循环完一个字母让索引+5    }

这时我就达到了把每个5位二进制位系统的值都放进数组里去

但是根据题意可知 有空缺的地方 需要用0填充 故写个for循环将剩下的空用0填充

for(int count1=a.size()*5;count1<(豌豆的英文r*c);count1++)    {        arr[count1]=0; //将剩余的位置用0填充    }

重头戏来了

如何螺旋式将这个数组的每个数填到二维数组中去呢?

根据题意可知 填充方向是右下左上

故思路是:

先填充第一行 再填充最后一列 再填充最后一行 再填充第一列

填充完第一行 起始行变量+1

填充完最后一列 末列变量-1

填充完最后一行 末行变量-1

填充完第一列 起始列变量+1

代码如下:

int istart=0,iend=r为什么yy打不开-1,jstart=0,jend=c-1,times1=0,i,j;while(iend>=istart&&三角形重心性质;jend>=jstart){//上面的行 for(j=jstart;j<=jend;j++){array[istart][j]=arr[times1];times1++;}istart++;//右边的列for(i=istart;i<=iend;i++){array[i][jend]=arr[times1];times1++;}jend--;//下面的行 if(iend>=istart){for(j=jend;j>=jstart;j--){array[iend][j]=arr[times1];times1++;}iend--;}//左边的列 if(jend>=jstart){for(i=iend;i>=istart;i--){array[i][jstart]=arr[times1];times1++;}jstart++;}}

根据题意 还有一个大坑 这个恶心的出题人让我们正常打印 即第一行 第二行 第三行….

真是处处都是坑

故直接一个嵌套for循环

for(i=0;i<r;i++){for(j=0;j<c;j++){cout<<array[i][j];}}}

完成!

到此这篇关于c++二维数组螺旋加密信息的文章就介绍到这了,更多相关c++二维数组螺旋加密内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 09:02:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f7c57ace9b99e33715e48fecb36038cb.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++二维数组螺旋加密信息.doc

本文 PDF 下载地址:C++二维数组螺旋加密信息.pdf

标签:数组   字母   题意   位数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图