经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C++实现转置矩阵的循环
来源:jb51  时间:2022/1/2 12:22:33  对本文有异议

前言

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

在这里插入图片描述

一、思路分析

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

在这里插入图片描述

二、代码实现

1.转置矩阵函数

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

代码如下(示例):

  1. /* Alkaid#3529 */
  2.  
  3. // 转职矩阵函数,按照指定的矩阵大小将矩阵转置
  4. void transpose_matrix(int matrix[10][10], int a);
  5.  
  6. // 函数实现
  7. void transpose_matrix(int matrix[10][10], int a) // int matrix[10][10] 为存储矩阵的数组,int a 为所需转置矩阵的大小
  8. {
  9. int mid = 0; // 中间量,辅助值的传递
  10.  
  11. for (int i = 0; i < a; i++) // 从行开始,逐行检索
  12. {
  13. for (int j = i + 1; j < a; j++) // 对该行每一列的元素检索
  14. {
  15. // 将对应位置的两个元素交换位置
  16. mid = matrix[i][j];
  17. matrix[i][j] = matrix[j][i];
  18. matrix[j][i] = mid;
  19. }
  20. }
  21.  
  22. return;
  23. }

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

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

代码如下(示例):

  1. /* Alkaid#3529 */
  2.  
  3. #include<iostream>
  4. using namespace std;
  5.  
  6. // 转职矩阵函数,按照指定的矩阵大小将矩阵转置
  7. void transpose_matrix(int matrix[10][10], int a);
  8.  
  9. int main()
  10. {
  11.  
  12. int matrix[10][10];
  13. int size = 0;
  14.  
  15.  
  16. for (int i = 0; i < 10; i++)
  17. {
  18. for (int j = 0; j < 10; j++)
  19. {
  20. matrix[i][j] = (i * i + j * i + j ^ i) % 10;
  21. }
  22. }
  23.  
  24. // 读入要求的矩阵大小,方便起见,使用矩阵的默认值,默认为方阵
  25. cout << "请输入矩阵的尺寸 (方便起见,矩阵大小设在10以内) :\n";
  26. cout << "size = ";
  27. cin >> size;
  28.  
  29. cout << "\n原矩阵为:\n";
  30.  
  31. // 输出原矩阵
  32. for (int i = 0; i < size; i++)
  33. {
  34. for (int j = 0; j < size; j++)
  35. {
  36. cout << matrix[i][j] << " ";
  37. }
  38. cout << endl;
  39. }
  40.  
  41. transpose_matrix(matrix, size);
  42.  
  43. cout << "\n转置后的矩阵为:\n";
  44.  
  45. // 输出转置后的矩阵
  46. for (int i = 0; i < size; i++)
  47. {
  48. for (int j = 0; j < size; j++)
  49. {
  50. cout << matrix[i][j] << " ";
  51. }
  52. cout << endl;
  53. }
  54.  
  55. return 0;
  56.  
  57. }
  58.  
  59. void transpose_matrix(int matrix[10][10], int a)
  60. // int matrix[10][10] 为存储矩阵的数组,int a 为所需转置矩阵的大小
  61. {
  62. int mid = 0; // 中间量,辅助值的传递
  63.  
  64. for (int i = 0; i < a; i++) // 从行开始,逐行检索
  65. {
  66. for (int j = i + 1; j < a; j++) // 对该行每一列的元素检索
  67. {
  68. // 将对应位置的两个元素交换位置
  69. mid = matrix[i][j];
  70. matrix[i][j] = matrix[j][i];
  71. matrix[j][i] = mid;
  72. }
  73. }
  74.  
  75. return;
  76. }

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

在这里插入图片描述

在这里插入图片描述

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

总结

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

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号