二维数组或矩阵的使用对于几个 应用。矩阵行和列用于保存数字。我们可以定义2D C++中的矩阵也使用多维数组。在本文中,我们将了解如何 使用 C++ 计算给定方阵的对角线和。

矩阵有两个对角线,主对角线和次要对角线(有时 称为大对角线和小对角线)。主要对角线从左上角开始 角(索引 [0, 0])到右下角(索引 [n-1, n-1]),其中 n 是 方阵。主要对角线从右上角(索引 [n-1, 0])到左下角 角(索引 [0, n-1])。让我们看看算法来找到元素的总和以及 这两个对角线。

矩阵对角线和

⎡⎣⎢862574319 ⎤⎦⎥,[853671249 ],
<span style="color:#000000">Sum of all elements in major diagonal: (8 + 7 + 9) = 24
Sum of all elements in minor diagonal: (3 + 7 + 2) = 12
</span>

在前面的示例中,使用了一个 3 x 3 矩阵。我们已经扫描了对角线 单独并计算总和。让我们看看算法和实现清晰 视图。

算法

  • 读取矩阵 M 作为输入
  • 考虑 M 有 n 行和 n 列
  • sum_major := 0
  • sum_minor := 0
  • 对于范围从 0 到 n - 1 的 i,请执行
    • 对于从 0 到 n - 1 的 j 朗吉格,执行

      • 如果 i 和 j 相同,则

        • sum_major := sum_major + M[ i ][ j ]
      • 结束如果
      • 如果 (i + j) 与 (N - 1) 相同,则
        • sum_minor := sum_minor + M[ i ][ j ]
      • 结束如果
    • 结束
  • 结束
  • 返回总和

#include <iostream> #include <cmath> #define N 7 using namespace std ; float solve ( int M [ N ] [ N ] ) { int sum_major = 0 ; int sum_minor = 0 ; for ( int i = 0 ; i < N ; i ++ ) { for ( int j = 0 ; j < N ; j ++ ) { if ( i == j ) { sum_major = sum_major + M [ i ] [ j ] ; } if ( (i + j ) == N - 1 ) { sum_minor = sum_minor + M [ i ] [ j ] ; } } } cout << "The sum of major diagonal: " << sum_major << endl ; cout << "The sum of minor diagonal: " << sum_minor << endl ; } int main ( ) { int mat1 [ N ] [ N ] = { { 5 , 8 , 74 , 21 , 69 , 78 , 25 } , { 48 , 2 , 98 , 6 , 63 , 52 , 3 } , { 85 , 12 , 10 , 6 , 9 , 47 , 21 } , { 6 , 12 , 18 , 32 , 5 , 10 , 32 } , { 8 , 45 , 74 , 69 , 1 , 14 , 56 } , { 7 , 69 , 17 , 25 , 89 , 23 , 47 } , { 98 , 23 , 15 , 20 , 63 , 21 , 56 } , } ; cout << "For the first matrix: " << endl ; solve ( mat1 ) ; int mat2 [ N ] [ N ] = { { 6 , 8 , 35 , 21 , 87 , 8 , 26 } , { 99 , 2 , 36 , 326 , 25 , 24 , 56 } , { 15 , 215 , 3 , 157 , 8 , 41 , 23 } , { 96 , 115 , 17 , 5 , 3 , 10 , 18 } , { 56 , 4 , 78 , 5 , 10 , 22 , 58 } , { 85 , 41 , 29 , 65 , 47 , 36 , 78 } , { 12 , 23 , 87 , 45 , 69 , 96 , 12 } } ; cout << "\nFor the second matrix: " << endl ; solve ( mat2 ) ; }

输出

<span style="color:#000000">For the first matrix:
The sum of major diagonal: 129
The sum of minor diagonal: 359For the second matrix:
The sum of major diagonal: 74
The sum of minor diagonal: 194
</span>

结论

在本文中,我们已经看到了如何计算给定方阵的对角线和。 大对角线从左上角开始到右下角,小对角线从小角开始 对角线从右上角开始到左下角。要找到这些的总和 对角线元素,我们遍历所有元素。当行和列索引值都可用时 相同,表示主要对角线元素,当两个指数之和为 与 n – 1 相同,其中 n 是矩阵的顺序,它将添加到次要对角线。这 过程需要两个嵌套循环,我们正在遍历 2D 阵列。所以它将需要 O(n2) amount of time to compute the sum of two diagonals of the given matrix.

C++计算矩阵对角线和的程序相关推荐

  1. python计算矩阵对角线之和_Python练习题 028:求3*3矩阵对角线数字之和

    [Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...

  2. java对角线之和_java编程之计算矩阵对角线和(从命令窗输入数据)

    /* *求10行.10列整型方阵对角线上元素之和 */ import java.util.Scanner; class linesum{ public static void main(String ...

  3. python编程题计算矩阵对角线_Python练习题 028:求3*3矩阵对角线数字之和

    [Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...

  4. java窗体输入数据怎么存,java编程之计算矩阵对角线和(从对话窗体输入数据)...

    /* *求10行.10列整型方阵对角线上元素之和 */ import javax.swing.JOptionPane; class linesum{ public static void main(S ...

  5. python计算矩阵对角线之和_Python练习实例38 | 求3*3矩阵主对角线元素之和

    刚拿到这道题,可能还有不少的小伙伴们不知道3*3主对角元素是哪几个. 其实很简答,就是3*3矩阵当中的第1个.第5个以及第9个的元素之和. 矩阵.jpg 接下来,show code! # 求3*3矩阵 ...

  6. 7-1 sdut-求一个3*3矩阵对角线元素之和7-2 求矩阵各行元素之和7-3 sdut- 对称矩阵的判定7-4 sdut- 杨辉三角7-5 sdut- 鞍点计算7-6 矩阵转置

    7-1 sdut-C语言实验-求一个3*3矩阵对角线元素之和 分数 12 全屏浏览题目 切换布局 作者 马新娟 单位 山东理工大学 给定一个3*3的矩阵,请你求出对角线元素之和. 输入格式: 按照行优 ...

  7. Java黑皮书课后题第8章:*8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和。编写一个程序,读取一个4*4的矩阵,显示主对角线和

    *8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和.编写一个程序,读取一个4*4的矩阵,显示主对角线和 题目 题目描述与运行示例 破题 ...

  8. LeetCode简单题之矩阵对角线元素的和

    题目 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和. 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和. 示例 1: 输入:mat = [[1,2,3], [4,5,6], ...

  9. ACMNO.19 C语言-对角求和 求一个3×3矩阵对角线元素之和。 输入 矩阵 输出 主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7

    这个我做了改进,可以实现NXN的矩阵.求出对角线之和! 只需要修改定义的define z的值就好! 接下来,进入正题! 题目描述: 求一个3×3矩阵对角线元素之和. 输入 矩阵 输出 主对角线 副对角 ...

最新文章

  1. mysql 字段加减_MySQL中你必须了解的函数
  2. 编写wordcount程序
  3. BZOJ 2049: [Sdoi2008]Cave 洞穴勘测
  4. Android TV开发焦点动作控制小技巧
  5. 机器学习之无监督学习——聚类
  6. [渝粤教育] 西南科技大学 服务管理 在线考试复习资料
  7. Linux思维导图及命令速查表8张
  8. (免费领取名企Java面试题)volatile作用,指令重排相关
  9. 怎样解决DEDE织梦友情链接字数限制与链接个数限制
  10. 怎样用c语言实现CPU超频,【七彩虹Z170评测】装机不求人25 教你一分钟学会CPU超频(全文)_七彩虹 战斧C.Z170-D3旗舰版 V20_DIY攒机装机不求人-中关村在线...
  11. 通过 xinput 禁用/启用输入设备
  12. 莫队算法+带修莫队+回滚莫队
  13. 可折叠的listview 之ExpandableListView基本使用
  14. FPGA芯片选型(FPGA初学者的选择)
  15. 通信网实验_Kruskal算法_Mininet_Ryu
  16. 联想一体机计算机用户名锁定,联想电脑输入密码多次被锁定怎么办
  17. 2022电工(初级)操作证考试题及模拟考试
  18. windows程序设计作业
  19. 期末复习【计算机组成原理】
  20. 高精地图编辑生成 opendrive OpenSCENARIO

热门文章

  1. Stm32 Max6675 K型热电偶 采集温度值(代码+相关方法)
  2. 专访金榕:四年蜕变,阿里iDST是如何登上浪潮之巅的?
  3. “75后”院士,任顶级大学副校长
  4. 如何利用HTML5快速开发一款小游戏
  5. openstack rally安装失败后折腾一遭
  6. 阳光明媚的一天~|~
  7. CSDN超简单的上传gif动图方法
  8. 三星识别文字_三星手机实现音频转文字、文字录入的方法,不知道的看这里!一遍就会了...
  9. 串口通信时序的位序是先发低位
  10. SpringBoot 封装返回类报错:No converter found for return value of type