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月10日 18:13:48

相关推荐

  • 计算给定值的以10为底的对数的C++程序

    各种应用中的自然计算相对需要以 10 为底的对数。对于竞争性考试,有一些快速方法可以记住一些日志值。在编程时,有几种使用库函数计算对数结果的方法以及一些快捷方式。在这篇文章中,我们将介绍几种在 C++ 中计算给定数字的以 10 为底的对数的方法。 使用 log10() 函数 用于确定给定参数的以 1…

    2025年12月17日
    000
  • 计算三个不重叠的子字符串,将它们连接起来形成一个回文串

    简介 在本教程中,我们将详细阐述一种从给定字符串 s 中查找三个不重叠子字符串的方法,并且当所有子字符串组合在一起时,它们形成一个回文。为了解决此任务,我们使用 C++ 编程语言的字符串类功能。 字符串中的回文表示该字符串在向前和向后方向上读起来都相同。回文字符串示例是 Madam。 假设有一个字符…

    2025年12月17日
    000
  • 在C语言中编写的斐波那契数列程序

    给定’n’个数字,任务是生成从0到n的斐波那契数列,其中整数的斐波那契数列形式为 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 其中,整数0和1将有固定的空格,然后添加两位数字,例如, 将原文翻译为中文后,保留HTML代码如下: 其中,整数0和1将有固定的空…

    2025年12月17日
    000
  • 在C语言中编写一个程序,用于检查一个字符串是否包含任何特殊字符

    给定一个字符串 str[],任务是检查字符串是否包含任何特殊字符,如果字符串有特殊字符,则打印“字符串不被接受”,否则打印“字符串被接受”。 特殊字符是那些既不是数字也不是字母的字符,即 – !@#$%^&*()+=-][‘;/.,{}|:”?`~ 因此,在C编程语言…

    2025年12月17日
    000
  • 计算不具有给定前缀的N位数字的数量

    这里的问题是确定长度为N的字符串中包含的字符’0’到’9’的总数,提供一个整数N和一个字符串前缀数组pre[],使得这些字符串中没有任何一个包含提供的前缀。本文的目的是实现一个程序,找到不具有给定前缀的N位数的数量。 在C编程语言中,一组不同的字符串被…

    2025年12月17日
    000
  • C程序计算身体质量指数(BMI)

    给定一个人的体重和身高,任务是找到他的BMI即身体质量指数,并显示出来。 计算身体质量指数需要两个东西: 体重身高 可以使用下面的公式计算BMI: BMI = (质量或体重) / (身高*身高) 其中体重以千克为单位,身高以米为单位 示例 Input 1-: weight = 60.00 Heigh…

    2025年12月17日
    000
  • 计算要与频率大于其他字符频率之和的字符连接的字符串数量

    我们的主要目标是确定最多的字符串能够被连接起来,以确保只有一个字母的频率超过所有其他字符的总和,前提是有一个名为arr[]的包含M个字符串的数组。 在继续之前,让我们了解一些数组和字符串的基本概念。 数组就是一组相同数据类型的元素,存储在连续的内存区域中。 C编程语言中的数组具有固定的大小,这意味着…

    2025年12月17日
    000
  • 在C++中,计算两点之间的整数点数量

    在本教程中,我们将编写一个程序,用于找到给定两个点之间的整数点的数量。 两个给定点之间的点的数量将是gcd(abs(x2), abs(y1-y2)) – 1。 如果连接线与x轴平行,则整数点的数量将是abs(y1 – y2) – 1。 如果连接线与y轴平行,则整数…

    2025年12月17日
    000
  • C程序打印空心金字塔和菱形图案

    在这里我们将看到如何使用C语言生成空心金字塔和菱形图案。我们可以很容易地生成实心金字塔图案。要使其成为空心,我们需要添加一些小技巧。 空心金字塔 对于第一行的金字塔,它将打印一个星号,并在最后一行打印n个星号。对于其他行,它将在行的开头和结尾分别打印两个星号,并在这两个星号之间有一些空格。 示例代码…

    2025年12月17日
    000
  • 计算菱形的面积和周长的程序,已知对角线是什么?在C++中,什么是菱形?

    什么是菱形? 在几何学中,菱形是四个边长相同的四边形。菱形与形状菱形相似。如果菱形的对角线成直角,那么它就变成正方形。 菱形的性质是 – 边相等对边平行,对角相等,是平行四边形对角线平分直角 下图是菱形 立即学习“C++免费学习笔记(深入)”; 问题 给定对角线,假设 d1 和 d2 的…

    2025年12月17日
    000
  • C语言中的身份矩阵程序

    给定一个方阵 M[r][c],其中“r”是一定数量的行,“c”是列,使得 r = c,我们必须检查“M”是否是单位矩阵。 恒等矩阵 恒等矩阵也称为大小为nxn方阵的单位矩阵,其中对角元素的整数值为1,非对角元素的整数值为0 p> 就像下面给定的示例 – $$I1=begin{bma…

    2025年12月17日
    000
  • 计算商和余数的C程序?

    Given two numbers dividend and divisor. The task is to write a program to find the quotient and remainder of these two numbers when the dividend is di…

    2025年12月17日
    000
  • 使用结构体编写的C程序,用于计算圆和圆柱体的面积

    在C编程语言中,我们可以利用结构体来找到圆的面积、圆柱体的面积和体积。 用于找到圆的面积的逻辑如下: s.areacircle = (float)pi*s.radius*s.radius; 用于计算圆柱体的面积的逻辑如下: s.areacylinder = (float)2*pi*s.radius*…

    2025年12月17日
    000
  • 一个矩阵概率问题?

    这里我们将看到一个矩阵概率问题。我们有一个矩形矩阵。我们可以以相同的概率从当前单元格移动四个方向。这四个方向是左、右、上、下。我们要计算从位置M[i,j]开始N次移动后的概率。 这里我们要做一些与DFS相关的事情。我们将从当前房间开始递归遍历四个可能的房间。然后我们就计算少走一步的概率。由于四个方向…

    2025年12月17日
    000
  • 使用pthread在C/C++中实现矩阵的加法和减法

    这里我们将看到如何使用多线程环境执行矩阵加法和减法。 pthread用于在C或C++中同时执行多个线程。 有两个矩阵A和B。每个矩阵的阶数为(m x n)。每个线程将获取每一行,并执行加法或减法。因此,对于 m 行,有 m 个不同的线程。 示例 #include#include #include #…

    2025年12月17日
    000
  • 用C语言编写计算十边形周长的程序

    什么是十边形? 给定边长,任务是计算十边形的周长。十边形是一种有10条边的多边形,因此也被称为10边形。它有10个顶点和边。一个正十边形的边长相等,每个内角为144度。 下面是十边形的图形 计算圆锥台的体积和表面积有一个公式 Perimeter = 10 * Side 示例 Input-: side…

    2025年12月17日
    000
  • 在C语言中编写一个程序,打印出以Z形状排列的平方矩阵

    程序描述 以z形式打印平方矩阵的元素 一个方阵是行数和列数相同的矩阵。一个n×n的矩阵被称为n阶方阵  算法 To print the elements of the Square Matrix in Z formWe need to print the first row of matrix th…

    2025年12月17日
    000
  • C++程序用于根据给定的底数计算给定数字的对数

    在几乎所有现代编程语言中,我们可以找到一些对数函数,如自然对数、以2为底的对数、以10为底的对数等。但有时我们需要计算不在给定库函数中的不同底数的对数。为了实现这个目标,我们可以使用简单的对数公式。在本文中,我们将看到如何在C++中使用给定的数字和给定的底数计算对数值。 给定底数计算对数的公式 假设…

    2025年12月17日
    000
  • C++程序创建自定义异常

    异常是C++的一个非常核心的概念。在执行过程中发生不希望或不可能的操作时会发生异常。在C++中处理这些不希望或不可能的操作被称为异常处理。异常处理主要使用三个特定的关键字,它们是‘try’、‘catch’和‘throw’。‘try’关键字用于执行可能遇到异常的代码,‘catch’关键字用于处理这些异…

    2025年12月17日
    000
  • C/C++程序:计算一个整数中设置的位数?

    对设置的位进行计数意味着对给定整数进行 1 的计数。为此,我们有多种可以应用的解决方案。对于这种情况,我们有一个二进制数(整数的二进制表示),为此我们必须计算字符串中 1 的数量。 要计算 1 的数量,我们将获取字符串,遍历每个元素并统计字符串中所有1的个数。例如,如果我们输入 17,则输出将为 2…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信