C++实现转置矩阵的循环

 更新时间:2022年01月02日 09:37:22   作者:Alkaid#3529  
大家好,本篇文章主要讲的是C++实现转置矩阵的循环,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

前言

矩阵的转置主要考查我们对循环的使用,通过简单的循环结构,我们可以很方便的完成矩阵的转置。

在这里插入图片描述

一、思路分析

转置矩阵与原矩阵的区别在于行列交换,我们可以构建一个二维数组完成对原矩阵的存储,我们只需将每个元素与其行列相反的位置处的元素进行交换,就可完成对矩阵的转置。

在这里插入图片描述

二、代码实现

1.转置矩阵函数

我们首先编写一个函数,完成对矩阵的转置。

代码如下(示例):

/* Alkaid#3529 */

// 转职矩阵函数,按照指定的矩阵大小将矩阵转置
void transpose_matrix(int matrix[10][10], int a);

// 函数实现
void transpose_matrix(int matrix[10][10], int a) // int matrix[10][10] 为存储矩阵的数组,int a 为所需转置矩阵的大小
{
	int mid = 0; // 中间量,辅助值的传递

	for (int i = 0; i < a; i++) // 从行开始,逐行检索
	{
		for (int j = i + 1; j < a; j++) // 对该行每一列的元素检索
		{
		// 将对应位置的两个元素交换位置
			mid = matrix[i][j];
			matrix[i][j] = matrix[j][i];
			matrix[j][i] = mid;
		}
	}

	return;
}

2.调用函数实现转置矩阵

我们在主函数中只需调用已经写好的函数,对转置前后的矩阵分别输出即可。

代码如下(示例):

/* Alkaid#3529 */

#include<iostream>
using namespace std;

// 转职矩阵函数,按照指定的矩阵大小将矩阵转置
void transpose_matrix(int matrix[10][10], int a);

int main()
{

	int matrix[10][10];
	int size = 0;


	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			matrix[i][j] = (i * i + j * i + j ^ i) % 10;
		}
	}

	//  读入要求的矩阵大小,方便起见,使用矩阵的默认值,默认为方阵
	cout << "请输入矩阵的尺寸 (方便起见,矩阵大小设在10以内) :\n";
	cout << "size = ";
	cin >> size;

	cout << "\n原矩阵为:\n";

	// 输出原矩阵
	for (int i = 0; i < size; i++)
	{
		for (int j = 0; j < size; j++)
		{
			cout << matrix[i][j] << "  ";
		}
		cout << endl;
	}

	transpose_matrix(matrix, size);

	cout << "\n转置后的矩阵为:\n";

	//  输出转置后的矩阵
	for (int i = 0; i < size; i++)
	{
		for (int j = 0; j < size; j++)
		{
			cout << matrix[i][j] << "  ";
		}
		cout << endl;
	}

	return 0;

}

void transpose_matrix(int matrix[10][10], int a)
// int matrix[10][10] 为存储矩阵的数组,int a 为所需转置矩阵的大小
{
	int mid = 0; // 中间量,辅助值的传递

	for (int i = 0; i < a; i++) // 从行开始,逐行检索
	{
		for (int j = i + 1; j < a; j++) // 对该行每一列的元素检索
		{
			// 将对应位置的两个元素交换位置
			mid = matrix[i][j];
			matrix[i][j] = matrix[j][i];
			matrix[j][i] = mid;
		}
	}

	return;
}

运行程序,看看效果如何。

在这里插入图片描述

在这里插入图片描述

正常运行,且功能完整,可以放心复制黏贴使用。

总结

矩阵转置,除了本文介绍的方法外,还可以利用三元组的形式完成对稀疏矩阵的转置,感兴趣的话不妨点个关注,会在后续的数据和结构与算法专栏进行详细讲解哦!

到此这篇关于C++实现转置矩阵的循环的文章就介绍到这了,更多相关C++转置矩阵循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • VisualStudio2022提交git代码的方法实现

    VisualStudio2022提交git代码的方法实现

    本文主要介绍了VisualStudio2022提交git代码的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • MacOS下C++使用WebRTC注意事项及问题解决

    MacOS下C++使用WebRTC注意事项及问题解决

    这篇文章主要介绍了MacOS下C++使用WebRTC注意事项,对于iOS/macOS平台,开启openh264,去除test,使用一些命令可以轻松解决,下面小编给大家带来了问题及解决方法,需要的朋友可以参考下
    2022-09-09
  • QT实战之打开最近文档功能的实现

    QT实战之打开最近文档功能的实现

    这篇文章主要为大家详细介绍了如何利用Qt实现打开最近文档功能,并实现基本的新建、打开、保存、退出、帮助等功能,感兴趣的可以动手尝试一下
    2022-06-06
  • C++写时拷贝实现原理及实例解析

    C++写时拷贝实现原理及实例解析

    这篇文章主要介绍了C++写时拷贝实现原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • VS2010+Opencv+MFC读取图像和视频显示在Picture控件

    VS2010+Opencv+MFC读取图像和视频显示在Picture控件

    这篇文章主要为大家详细介绍了VS2010+Opencv+MFC读取图像和视频显示在Picture控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • C++中图片类型的识别与转换详解方法

    C++中图片类型的识别与转换详解方法

    本文简单的介绍一下C++语言中如何识别图片文件的类型,以及各图片类型之间的转换方法,并提供相关的源码供大家参考,感兴趣的朋友快来看看吧
    2021-11-11
  • Linux网络编程之基于UDP实现可靠的文件传输示例

    Linux网络编程之基于UDP实现可靠的文件传输示例

    这篇文章主要介绍了Linux网络编程之基于UDP实现可靠的文件传输示例,是很实用的技巧,需要的朋友可以参考下
    2014-08-08
  • C++实现神经BP神经网络

    C++实现神经BP神经网络

    这篇文章主要为大家详细介绍了C++实现神经BP神经网络,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • C语言整形提升举例详解

    C语言整形提升举例详解

    对于整形提升,高位需要补位,那么补什么呢,无符号数高位补0,有符号数高位补1,下面这篇文章主要给大家介绍了关于C语言整形提升的相关资料,需要的朋友可以参考下
    2023-01-01
  • OpenCV 直方图均衡化的实现原理解析

    OpenCV 直方图均衡化的实现原理解析

    直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法,今天通过本文给大家介绍OpenCV 直方图均衡化的实现原理解析,感兴趣的朋友跟随小编一起看看吧
    2022-01-01

最新评论