iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++二维数组螺旋加密信息
  • 445
分享到

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

2024-04-02 19:04:59 445人浏览 独家记忆
摘要

由题目要求可知 题目要求先创建一个r行c列的矩阵 然后输入一串字符串 字符串长度肯定小于r*c/5 由A C M的表示方式可以看出每个字符由5位的二进制位系统表示(无符号位) 那

由题目要求可知 题目要求先创建一个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-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++二维数组螺旋加密内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++二维数组螺旋加密信息

本文链接: https://www.lsjlt.com/news/161377.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++二维数组螺旋加密信息
    由题目要求可知 题目要求先创建一个r行c列的矩阵 然后输入一串字符串 字符串长度肯定小于r*c/5 由A C M的表示方式可以看出每个字符由5位的二进制位系统表示(无符号位) 那...
    99+
    2024-04-02
  • C++如何实现二维数组螺旋加密信息
    小编给大家分享一下C++如何实现二维数组螺旋加密信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!由题目要求可知 题目要求先创建一个r行c列的矩阵然后输入一串字符串 字符串长度肯定小于r*c/5由A C M的表示方式可以看...
    99+
    2023-06-22
  • JavaScript数组操作之旋转二维数组
    目录一、题目描述二、思路与实现三、总结一、题目描述 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90...
    99+
    2024-04-02
  • JavaScript旋转二维数组的方法
    这篇文章主要讲解了“JavaScript旋转二维数组的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript旋转二维数组的方法”吧!一、题目描述给定一个 n &am...
    99+
    2023-06-30
  • php如何实现二维数组旋转
    这篇文章主要介绍了php如何实现二维数组旋转,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php实现二维数组旋转的方法:1、创建一个PHP示例文件;2、定义一个二维数组;3、...
    99+
    2023-06-22
  • C#二维数组与多维数组如何使用
    这篇文章主要介绍“C#二维数组与多维数组如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#二维数组与多维数组如何使用”文章能帮助大家解决问题。C# 中同样支持多维数组(也可称为矩形数组),它...
    99+
    2023-07-05
  • C#二维数组与多维数组的具体使用
    目录1、二维数组2、初始化二维数组3、访问二维数组种的元素C# 中同样支持多维数组(也可称为矩形数组),它可以是二维的,也可以是三维的,多维数组中的数据以类似表格(行、列)的形式存储...
    99+
    2023-05-15
    C#二维数组与多维数组 C#二维数组 C#多维数组
  • C++数组指针和二维数组详情
    目录1、二维数组2、数组指针和二维数组1、二维数组 对于一维数组,int arr[10]; arr是数组名,也是首元素的地址,&arr是数组的地址,那么对于二维数组 int ...
    99+
    2024-04-02
  • c++中二维数组的定义
    在 c++ 中,二维数组的定义格式为:数据类型 数组名行数。元素通过 行索引 访问。可通过嵌套大括号或动态分配初始化。动态分配后需释放内存以避免泄漏。 C++ 中二维数组定义 定义格式...
    99+
    2024-05-08
    c++
  • C#中二维数组的用法
    本篇内容主要讲解“C#中二维数组的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中二维数组的用法”吧!C#二维数组publicclassArray2D...{  publics...
    99+
    2023-06-18
  • C++中如何使用二维数组
    C++中如何使用二维数组,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C++二维数组new应用方式一:A (*ga)[n] = new&nbs...
    99+
    2023-06-17
  • c++中如何输入二维数组
    通过以下步骤在 c++ 中输入二维数组:定义数组(指定行数和列数);使用嵌套循环遍历数组元素,并使用 cin 流读取用户输入。 C++ 中如何输入二维数组 在 C++ 中,可以通过以下...
    99+
    2024-05-09
    c++
  • php二维数组如何增加键值
    这篇文章主要为大家展示了“php二维数组如何增加键值”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php二维数组如何增加键值”这篇文章吧。php二维数组增加键值的方法:1、创建一个PHP示例文件...
    99+
    2023-06-25
  • php如何添加二维数组元素
    二维数组是一种嵌套的数据结构,它由多个一维数组组成。在 PHP 中,添加二维数组元素需要使用一个或多个数组函数,本文将介绍如何添加二维数组元素。使用 array_push 函数array_push 函数是 PHP 提供的一个向数组尾部添加元...
    99+
    2023-05-19
  • c++中如何定义二维数组
    在 c++ 中定义二维数组的方法:声明数组类型:int arr行数;使用嵌套循环初始化数组元素;使用下标运算符访问数组元素。 C++ 中定义二维数组 在 C++ 中,二维数组是一种数据...
    99+
    2024-05-09
    c++
  • 如何使用C++数组指针和二维数组
    这篇文章主要介绍“如何使用C++数组指针和二维数组”,在日常操作中,相信很多人在如何使用C++数组指针和二维数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用C++数组指针和二维数组”的疑惑有所帮助!...
    99+
    2023-06-25
  • C#中怎么初始化二维数组
    这期内容当中小编将会给大家带来有关C#中怎么初始化二维数组,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#多维数组:(1)数组的声明:int[] a1;  //整数类型的一...
    99+
    2023-06-17
  • c语言二维数组怎么引用
    在C语言中,可以使用下标来引用二维数组。二维数组可以看作是一个行和列的矩阵,可以通过两个下标来引用其中的元素。 例如,有一个二维数组...
    99+
    2024-02-29
    c语言
  • 详解C++ 指针与二维数组名
    和一维数组类似,C++ 将二维数组名解释为其第一个元素的地址,而二维数组的第一个元素为一维数组,下面详细总结下二维数组名的性质。 和一维数组类似,C++ 将二维数组名解释为其第一个元...
    99+
    2024-04-02
  • C++中怎么初始化二维数组
    这期内容当中小编将会给大家带来有关C++中怎么初始化二维数组,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++的二维数组是不能用变量初始化的,像下面的代码肯定是编译不通过的:int i=5;&...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作