在C ++中计算总和等于对角线总和的行/列

我们给定一个矩阵,该矩阵是具有行和列的二维数组,任务是计算所有行和列的总和计数,以使其等于主矩阵或辅助矩阵的总和。

输入-

int arr[row][col] = {

   { 4, 1, 7 },

   { 10, 3, 5 },

   { 2, 2, 11}

}

输出-总和等于对角总和的行/列数为&mins; 2

解释-

主对角线的总和是:4 + 3 + 11 = 18,第二对角线的总和是:7 + 3 + 2 =12。行的总和是4 +1 + 7 = 12(TRUE),10 + 3 + 5 = 18 (TRUE),2 + 2 + 11 = 15(FALSE),列和为:4 + 10 + 2 = 16(FALSE),1 + 3 + 2 = 6(FALSE),7 + 5 + 11 = 23(假)。因此,与主对角线和辅助对角线之和匹配的行/列数为− 2

输入-

int arr[row][col] = {

   { 1, 2, 3 },

   { 4, 5, 2 },

   { 7, 9, 10}

}

输出-总和等于对角线总和的行/列数为-2

解释-

主对角线的总和是:1 + 5 + 10 = 16,第二对角线的总和是:7 + 3 + 5 =15。行的总和是1 + 2 + 3 = 6(FALSE),4 + 5 + 2 = 11 (FALSE),7 + 9 + 10 = 26(FALSE),列和为:7 + 4 + 1 = 12(FALSE),9 + 5 + 2 = 16(TRUE),3 + 2 + 10 = 15(真正)。因此,与主对角线和辅助对角线之和匹配的行/列数为− 2

以下程序中使用的方法如下

  • 创建二维数组以形成行大小和列大小的矩阵

  • 为主要矩阵和辅助矩阵创建变量。此外,还有一个用于存储计数的计数变量

  • 从i到0直到col和j从col-1直到col开始循环,递增i并递减j

  • 在循环内部,将主体设置为主体+矩阵[i] [i],将次要设置为次要+矩阵[i] [j]

  • 从i开始循环FOR至0直到col

  • 在循环内,将row设置为0并将col设置为0,然后在循环内,从j到0开始另一个循环,直到col

  • 在循环内部,将行设置为行+矩阵[i] [j]

  • 在循环内,从j到0直到col开始另一个循环FOR

    在循环内,col到col + matrix [j] [i]

  • 在循环内部,检查IF(行==主体)|| (行==次要),然后将计数加1

  • 在循环内部,检查IF(col ==主体)|| (col == secondary)然后将计数加1

  • 返回计数

  • 打印结果。

示例

#include <iostream>

#define row 3

#define col 3

using namespace std;

int diagonal_sum(int matrix[row][col]){

   int principal = 0;

   int secondary = 0;

   int r = 0;

   int c = 0;

   int count = 0;

   int i = 0, j = 0;

   for (i = 0, j = col - 1; i < col; i++, j--){

      principal += matrix[i][i];

      secondary += matrix[i][j];

   }

   for (int i = 0; i < col; i++){

      r = 0;

      c = 0;

      for (int j = 0; j < col; j++){

         r += matrix[i][j];

      }

      for (int j = 0; j < col; j++){

         c += matrix[j][i];

      }

      if ((r == principal) || (r == secondary)){

         count++;

      }

      if ((c == principal) || (c == secondary)){

         count++;

      }

   }

   return count;

}

int main(){

   int matrix[row][col] = {

      { 4, 1, 7 },

      { 10, 3, 5 },

      { 2, 2, 11}};

   cout<<"Count of rows/columns with sum equals to diagonal sum are: "<<diagonal_sum(matrix);

   return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of rows/columns with sum equals to diagonal sum are: 2

以上是 在C ++中计算总和等于对角线总和的行/列 的全部内容, 来源链接: utcz.com/z/317118.html

回到顶部