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

目录
  • 前言
  • 一、思路分析
  • 二、代码实现
    • 1.转置矩阵函数
    • 2.调用函数实现转置矩阵
  • 总结

前言

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

一、思路分析

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

二、代码实现

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++转置矩阵循环内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++实现线性代数矩阵行简化

    本文实例为大家分享了C++实现线性代数矩阵行简化的具体代码,供大家参考,具体内容如下 输入一个矩阵,可分别输出该矩阵的阶梯型和最简型. 输入仅支持整数,支持分数形式输出. 妈妈再也不用担心俺的线性代数作业- 使用实例: (实现格式化输出部分写的极为丑陋......) #include<iostream> #include<cmath> #include<algorithm> #include<iomanip> #include<cstdio> #

  • C/C++实现矩阵的转置(示例代码)

    废话不多说,直接上代码 复制代码 代码如下: #include <iostream>using namespace std; const int N = 5; int matrix[5][5] ={    1,2,3,4,5,    1,2,3,4,5,    1,2,3,4,5,    1,2,3,4,5,    1,2,3,4,5}; void swap(int &a,int &b){    a=a^b;    b=a^b;    a=a^b;}void matrix_tr

  • C++矩阵运算的实现简单

    利用C++实现矩阵的构造,通过运算符的重载实现矩阵的乘法.加法等.并且实现矩阵形状的打印,矩阵的打印. #include<iostream> #include<memory> #include<assert.h> #include<stdlib.h> using namespace std; class Matrix{ public: Matrix(int row, int col); //构造函数 Matrix(int row, int col, int

  • C++中实现矩阵的加法和乘法实例

    C++中实现矩阵的加法和乘法实例 实现效果图: 实例代码: #include<iostream> using namespace std; class Matrix { int row;//矩阵的行 int col;//矩阵的列 int **a;//保存二维数组的元素 public: Matrix();//默认构造函数 Matrix(int r, int c); Matrix(const Matrix &is);//拷贝构造函数 void Madd(const Matrix &

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

    目录 前言 一.思路分析 二.代码实现 1.转置矩阵函数 2.调用函数实现转置矩阵 总结 前言 矩阵的转置主要考查我们对循环的使用,通过简单的循环结构,我们可以很方便的完成矩阵的转置. 一.思路分析 转置矩阵与原矩阵的区别在于行列交换,我们可以构建一个二维数组完成对原矩阵的存储,我们只需将每个元素与其行列相反的位置处的元素进行交换,就可完成对矩阵的转置. 二.代码实现 1.转置矩阵函数 我们首先编写一个函数,完成对矩阵的转置. 代码如下(示例): /* Alkaid#3529 */ // 转职矩

  • angular.foreach 循环方法使用指南

    angular有自己的生命周期.循环给一个 angular监听的变量复值时.最好还是用angular自带的循环方法."angular.foreach" 格式: 复制代码 代码如下: var objs =[{a:1},{a:2}]; angular.forEach(objs, function(data,index,array){ //data等价于array[index] console.log(data.a+'='+array[index].a); }); 参数如下: objs:需要

  • 利用Python循环(包括while&for)各种打印九九乘法表的实例

    一.for循环打印九九乘法表 #注意:由于缩进在浏览器不好控制,请大家见谅,后续会有图片传入. 1.1 左下角 for i in range(1,10): for j in range(1,i+1): print('%d*%d=%2d\t'%(j,i,i*j),end='') print() 效果图: 1.2 右下角 for i in range(1,10): for k in range(i+1,10): print(end=' ') #此处为返回八个空格,请注意 for j in range

  • AngularJS 中的数据源的循环输出

    AngularJS 中的数据源的循环输出 最近也是刚刚接触angular前端框架的,但使用的几天就感觉效果比较明显,尤其是在数据的输出效果上来看,比原生的js的编程效率要高许多,所以这也就是为什么许多公司都要求前端开发需要你熟悉使用前端框架了,可以更快的提高项目的效率.今天想要说的就是在使用angular前端框架的时候的数据源的循环输出. 把数组中的数据循环输出到页面上,如果使用的js的方法的话就是需要对数组进行for循环输出,并且在输出的时候是对页面中的DOM层中的节点进行操作的,而如果使用前

  • AngularJS入门(用ng-repeat指令实现循环输出

    循环输出列表很多项目在web服务端做,前端做好模版后后端写jsp代码,双方需要紧密合作,分清责任.有些项目由后端提供restful方法,前端用ajax调用自己循环,这种一般是大把的jquery拼字符串,太不直观,有人搞出了js模板,也没好到哪里去. 用AngularJS就爽多了,语法和JSP类似: <!doctype html> <html ng-app> <head> <meta charset="utf-8"> <title&g

  • 详解在springmvc中解决FastJson循环引用的问题

    我们先来看一个例子: package com.elong.bms; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSON; public class Test { public static void main(String[] args) { Map<String, Student> maps = new HashMap<

  • Java用数组实现循环队列的示例

    复习了下数据结构,用Java的数组实现一下循环队列. 队列的类 //循环队列 class CirQueue{ private int QueueSize; private int front; private int rear; private int[] queueList ; public CirQueue(int QueueSize){ this.QueueSize = QueueSize; queueList = new int[QueueSize]; front = 0; rear =

  • perl控制流介绍(if条件,while,for循环,foreach)

    1. 语句块:{ }之间的部分即为BLOCK语句块. 2. 条件语句:if ( expression )  BLOCK; if ( expression )     BLOCK1else BLOCK2; if ( expression1 )     BLOCK1;elsif ( expression2 )    BLOCK2;else    BLOCK3; #倒置的if语句expression if ( test_expression ); 涉及到的关系运算符:数字值比较:==, >, <,

  • 修改Python的pyxmpp2中的主循环使其提高性能

    引子 之前clubot使用的pyxmpp2的默认mainloop也就是一个poll的主循环,但是clubot上线后资源占用非常厉害,使用strace跟踪发现clubot在不停的poll,查看pyxmpp2代码发现pyxmpp2的poll在使用超时阻塞时使用最小超时时间,而最小超时时间一直是0,所以会变成一个没有超时的非阻塞poll很浪费资源,不打算更改库代码,所以自己仿照poll的mainloop写了一个更加高效的epoll的mainloop 实现 #!/usr/bin/env python #

  • Swift流程控制之循环语句和判断语句详解

    Swift提供了所有c类语言的控制流结构.包括for和while循环来执行一个任务多次:if和switch语句来执行确定的条件下不同的分支的代码:break和continue关键字能将运行流程转到你代码的另一个点上. 除了C语言传统的for-condition-increment循环,Swift加入了for-in循环,能更加容易的遍历arrays, dictionaries, ranges, strings等其他序列类型. Swift的switch语句也比C语言的要强大很多. Swift中swi

随机推荐