IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++螺旋式输出矩阵 -> 正文阅读

[C++知识库]C++螺旋式输出矩阵

#include<iostream>
using namespace std;
//给矩阵输出顺序设定为右下左上四个方向即可
//set the lower right and upper left direction for the matrix output
typedef struct
{
	int x;
	int y;
}direction;
void Output(int a[][4],direction dir[] )
{
	int index = 0;//方位
	int i = 0;
	int j = 0;
	//设定墙(set wall)
	int bottom_X = 0;
	int top_X = 4;
	int bottom_Y = 0;
	int top_Y = 4;
	//当所有墙重合是结束
	while (bottom_Y != top_Y&&bottom_X!=top_X)
	{
		while (index < 4)
		{

			if (i >= bottom_Y && i < top_Y && j >= bottom_X && j < top_X)
			{


				cout << a[i][j] << " ";
				//实现坐标的移动(realize the movement of coordinates)
				i += dir[index].y;//i对应y坐标(i corresponds to y coordinate)
				j += dir[index].x;//j对应x坐标(j corresponds to x coordinate)

			}
			//注意当第一次跳出的时候j=4。第三第四等等情况已经越界无法第二次进入输出,在switch回退到各个合适的顶部或底部位置
			else
			{
				switch (index)
				{
					//每走完一个方位就要有一面墙的位置增加或减少
					//after each direction ,the position of one wall wil increase or decrease
				case 0:++bottom_Y; //遍历完一层上底部的墙向下移
					++i;//墙下移了,i也要下移,不然i无法>=bottom_Y无法继续下一步循环
					--j;//跳出循环时j=4,要回退一步
					break;
				case 1:--top_X; --i; --j;
					break;
				case 2:--top_Y; ++j; --i;
					break;
				case 3:++bottom_X; ++i; ++j;
					break;
				}
				++index;//走到尽头换个方向(go to the end and change direction)

			}
		}
		index = 0;
	}
}
int main()
{
	int a[4][4] =
	{
		1,2,3,4,
		5,6,7,8,
		9,10,11,12,
		13,14,15,16
	};
	direction dir[4] =
	{
		1,0,//turn right
		0,1,//go down
		-1,0,//turn left
		0,-1//do up

	};
	Output(a, dir);
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 11:49:20  更:2021-08-30 11:50:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/12 1:38:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码