C++程序计算矩阵对角线之和

c++程序计算矩阵对角线之和

The utilization of 2-dimensional arrays or matrices is extremely advantageous for severalapplications. Matrix rows and columns are used to hold numbers. We can define 2D在C++中使用多维数组来表示矩阵。在本文中,我们将看看如何实现use C++ to calculate the diagonal sum of a given square matrix.

The matrices have two diagonals, the main diagonal and the secondary diagonal (sometimesreferred to as major and minor diagonals). The major diagonal starts from the top-leftcorner (index [0, 0]) to the bottom-right corner (index [n-1, n-1]) where n is the order of the正方形矩阵。主对角线从右上角(索引[n-1, 0])开始,到左下角corner (index [0, n-1]). Let us see the algorithm to find the sum of the elements along withthese two diagonals.

Matrix Diagonal Sum

的中文翻译为:

矩阵对角线之和

$$begin{bmatrix}8 & 5& 3newline6 & 7& 1newline2 & 4& 9\end{bmatrix},$$

Sum of all elements in major diagonal: (8 + 7 + 9) = 24Sum of all elements in minor diagonal: (3 + 7 + 2) = 12

In the previous example, one 3 x 3 matrix was used. We have scanned the diagonalsindividually and calculated the sum. Let us see the algorithm and implementation for a clearview.

Algorithm

读取矩阵 M 作为输入考虑 M 具有 n 行和 n 列sum_major := 0sum_minor := 0对于i从0到n-1的范围,执行for j rangign from 0 to n – 1, doif i and j are the same, thensum_major := sum_major + M[ i ][ j ]end ifif (i + j) is same as (N – 1), thensum_minor := sum_minor + M[ i ][ j ]end ifend forend forreturn sum

Example

#include #include #define N 7using 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 );}

输出

For the first matrix: The sum of major diagonal: 129The sum of minor diagonal: 359For the second matrix: The sum of major diagonal: 74The sum of minor diagonal: 194

Conclusion

In this article, we have seen how to calculate the diagonal sums of a given square matrix.主对角线从左上角延伸到右下角,而副对角线则从左下角延伸到右上角斜线从右上角开始到左下角。要找到这些的总和diagonal elements, we loop through all elements. When both row and column index values相同,它表示主对角线元素,当两个索引的和为与矩阵的阶数n-1相同,它将添加到副对角线上procedure takes two nested loops and we are traversing through all elements present in the2D数组。因此,计算两条对角线的和将花费O(n2)的时间给定的矩阵。

以上就是C++程序计算矩阵对角线之和的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:43:41
下一篇 2025年12月17日 21:44:01

相关推荐

  • 关于如何解决css3中calc在less编译时被计算的办法

    这篇文章主要介绍了浅谈css3中calc在less编译时被计算的解决办法的相关资料,内容挺不错的,现在分享给大家,也给大家做个参考。 对于前端er来说,Less或Sass已经是一项必备的基本技能,有了这个利器,可以省下前端开发者的很多编码时间,让你写CSS如行云流水一般,然后最近我在Less里加入c…

    好文分享 2025年12月24日
    000
  • 如何使用CSS3中的calc()属性来表达尺寸

    这篇文章主要介绍了关于如何使用css3中的calc()属性来表达尺寸,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 calc()的用法十分巧妙,可以像我们在学校做数学应用题那样列式子来计算长度宽度等值,从而一定程度上实现自适应布局,下面我们就来介绍如何使用CSS3中的calc()属性…

    好文分享 2025年12月24日
    000
  • 关于css3中矩阵的使用方法

    这篇文章主要介绍了css3 矩阵的使用详解的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 css3 矩阵变化. 应用格式为: transform: matrix(a,b,c,d,e,f);对应于就是: 实际应用中的转换就是: 立即学习“前端免费学习笔记(深入)…

    2025年12月24日
    000
  • 程序设计中的隐式类型转换的类型及重要性

    隐式类型转换的种类及其在程序设计中的重要性 在程序设计中,类型转换是一种常见的操作,用于改变变量或对象的数据类型。无论是显式类型转换还是隐式类型转换,都是为了满足某些特定的需求。在本文中,我们将重点讨论隐式类型转换的种类以及它在程序设计中的重要性。 隐式类型转换是指在特定条件下,编译器自动将一种数据…

    2025年12月21日
    000
  • 如何使用HTML5创建一个变换矩阵?

    In the following article, we are going to learn about how to create a transformation matrix with HTML5. HTML5 canvas provides methods that allow modif…

    2025年12月21日
    000
  • 使用C语言编写的计算最大公约数的程序

    C语言是一种常用的编程语言,广泛应用于软件开发和算法实现。在数学中,最大公约数是指能够整除给定的几个数的最大正整数。在本文中,我们将使用C语言编写一个求最大公约数的程序,并提供具体的代码示例。 题目:C语言编写的求最大公约数的程序 最大公约数的求解可以采用多种算法,而其中一个常用的方法是欧几里得算法…

    2025年12月17日
    000
  • C程序的起始点是什么?

    C语言程序的执行起点在哪里? C语言作为一种高级编程语言,被广泛应用于各种领域,成为程序员的必备技能之一。在编写C语言程序时,我们需要明确程序的执行起点,也就是程序从哪里开始执行。那么,C语言程序的执行起点究竟在哪里呢?本文将带您深入了解C语言程序的执行起点。 C语言程序的执行起点是main函数。在…

    2025年12月17日
    000
  • 如何通过C++编写一个简单的地址簿程序?

    如何通过C++编写一个简单的地址簿程序? 引言: 在现代社会中,地址簿是一种常见的工具,用于存储和管理个人联系人的基本信息,如姓名、电话号码和地址等。在本文中,我们将详细介绍如何使用C++编写一个简单的地址簿程序。 正文: 立即学习“C++免费学习笔记(深入)”; 步骤1:定义地址簿条目的结构 首先…

    2025年12月17日
    000
  • 计算三棱柱的表面积的程序

    让我们看看如何编写程序来计算三棱柱的表面积。 计算三棱柱的表面积似乎非常基本,但程序员可能在很多领域都需要它。下面列出了一些常见场景 – 3D 图形和动画 – 在构建 3D 模型时,动画师和游戏开发人员可能需要计算三棱柱的表面积,以便在虚拟世界中正确表示它。 工程师和建筑师在…

    2025年12月17日
    000
  • 计算一个数的阶乘中末尾零的个数的C/C++编程?

    计算阶乘数中末尾零的个数是通过计算该数的因子中2和5的个数来完成的。因为2*5等于10,而10是阶乘数中的末尾零。 示例 7的阶乘=5040,末尾0的个数为1。 根据我们的逻辑,7!=2*3*4*5*6*7,它有3个2和1个5,所以末尾0的个数为1。 #include using namespace…

    2025年12月17日
    000
  • 计算最大公因数的C++程序

    最高公因数或最大公约数是能够在不产生任何余数的情况下,能够同时整除两个或多个值的因数。在本文中,我们将讨论在C++中执行两个数字的HCF / GCD的几种方法。 这只是一个数学解决方案,有几种算法可以找到最大公约数。欧几里得方法是常见的找到最大公约数的方法。我们将在迭代模式和递归模式下使用相同的算法…

    2025年12月17日
    000
  • 如何在C语言中计算可变数量的参数?

    在本节中,我们将了解在 C 中参数数量可变的情况下如何计算参数数量。 C 支持省略号。这用于将可变数量的参数传递给函数。用户可以使用三种不同方式之一对参数进行计数。 通过传递第一个参数作为参数计数 将最后一个参数作为 NULL 传递。 立即学习“C语言免费学习笔记(深入)”; 使用 printf()…

    2025年12月17日
    000
  • 编写一个程序来打印二项式展开系列

    二项展开式是一个数学公式,用于展开 (a+b)^n 形式的表达式,其中 n 是正整数,a 和 b 可以是任何实数或复数。展开式给出了展开式中各项的系数。 一个二项式展开可以表示为 $$mathrm{(a+b)^n= ^nC_0a^nb^0+ ^nC_1a^{n-1}b^1 + ^nCa^{n-2}b…

    2025年12月17日
    000
  • C++程序,用于计算数组元素大于其左侧所有元素且至少有K个元素在其右侧的数量

    字符串是一个对象,它表示数据字符的序列。字符串是始终表示为文本格式的数据容器。它还用于概念、比较、拆分、连接、替换、修剪、长度、实习、等于、比较、子字符串操作。使用快速排序分区算法的数组中的 K 个最大(或最小)元素。 这是一个数组 R[],其中包含 N 个不同的整数。任务是找到那个特定元素,该元素…

    2025年12月17日
    000
  • 从1到N逆序打印质数

    输入数字n,直到计算素数并以倒序显示 Input : number 30Output : 29 23 19 17 13 11 7 5 3 2 算法 STARTStep 1 -> declare variables as n, I, j, flag to 0 as intStep 2 ->…

    2025年12月17日
    000
  • 计算通过交换给定数组中字符串对的第一个字符而得到的新字符串对的数量

    在这个问题中,我们需要选择一对字符串并交换它们的第一个字符。之后,我们需要计算新对的总数。我们可以通过交换每对的第一个字符并检查它是否存在于数组中来解决这个问题。 解决这个问题的高效方法是使用哈希映射数据结构。 问题陈述 – 我们有一个包含N个字符串的数组。我们可以从所有数组元素中选择任…

    2025年12月17日
    000
  • C++程序用于计算使数字n变为1所需的最小操作次数

    假设我们有一个数字n。我们任意执行这些操作之一 – 当 n 可被 2 整除时,将 n 替换为 n/2 当 n 可被 3 整除时,将 n 替换为 2n/3 当 n 可被 5 整除时,将 n 替换为 4n/5 立即学习“C++免费学习笔记(深入)”; li> 我们必须计算出数字 1 所…

    2025年12月17日
    100
  • 在C程序中,以矩阵对角线模式打印数字

    任务是打印一个 n x n 的对角线模式的矩阵。 如果 n 是 3,那么打印一个对角线模式的矩阵如下: 所以输出将会是: 示例 Input: 3Output: 1 2 4 3 5 7 6 8 9Input: 4Output: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 1…

    2025年12月17日
    000
  • C语言编写的汉诺塔程序

    汉诺塔是一个数学难题。它由三根杆和若干个不同大小的圆盘组成,这些圆盘可以滑动到任意一根杆上。难题以圆盘按大小升序整齐堆叠在一根杆上开始,最小的圆盘在顶部。我们必须将相同的堆叠移到第三根杆上。 难题的目标是将整个堆叠移动到另一根杆上,遵守以下简单规则− 一次只能移动一个圆盘。 每次移动包括从一根堆中取…

    2025年12月17日
    000
  • C++程序:计算使所有礼物数量相等的操作次数

    假设我们有两个数组 A 和 B,每个数组的大小为 n。有n份礼物,我们想把它们送给一些孩子。第 i 份礼物有 A[i] 颗糖果和 B[i] 个橙子。在一次移动过程中,我们可以选择一些礼物并执行以下操作之一 – 从该礼物中取出一颗糖果(如果有); p> 从这份礼物中取出一颗橙子(如果…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信