Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 합계가 대각선 합계와 동일한 행/열 계산


행과 열이 있는 2차원 배열인 행렬이 주어졌으며 작업은 모든 행과 열의 합을 계산하여 다음과 같도록 하는 것입니다. 주 또는 이차 행렬의 합입니다.

입력 -

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

입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 행 크기와 열 크기의 행렬을 형성하는 2차원 배열 만들기

  • 주행렬과 이차행렬에 대한 변수를 생성합니다. 또한 카운트를 저장할 카운트 변수

  • 루프 FOR i에서 0까지 col까지, j에서 col까지 - 1에서 col까지, i를 증가시키고 j를 감소시킵니다.

  • 루프 내에서 principal을 principal + matrix[i][i]로 설정하고 secondary를 secondary + matrix[i][j]

    로 설정합니다.
  • i부터 0까지 FOR 루프 시작, col까지

  • 루프 내에서 row를 0으로 설정하고 col을 0으로 설정하고 루프 내에서 또 다른 루프 FOR를 시작하여 j에서 0까지 col

  • 루프 내에서 행을 행 + 행렬[i][j]

    로 설정합니다.
  • 루프 내에서 j에서 0까지 col

    까지 FOR 또 다른 루프를 시작합니다. 루프 내에서 col 대 col + matrix[j][i]
  • 루프 내에서 IF(row ==principal) || (row ==secondary) 그런 다음 카운트를 1 증가시킵니다.

  • 루프 내에서 IF(col ==principal) || (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