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

C++에서 정사각형 행렬의 두 대각선에 있는 행별 공통 요소


2D 정방 행렬을 입력으로 제공합니다. 목표는 1차 대각선과 2차 대각선 모두에서 공통적인 요소를 찾는 것입니다. 입력 행렬이

인 경우
1 2 3
2 2 4
1 4 7

그런 다음 기본 대각선은 1 2 7이고 보조 대각선은 3 2 1입니다. 공통 요소는 2입니다.

둘 다에는 항상 하나 이상의 공통 요소가 있습니다.

예시

입력 - 행렬[][5] ={{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};

출력 − 대각선의 행별 공통 요소:3

설명 − 행렬은 다음과 같습니다.

1 2 1
4 1 6
1 8 1

기본 대각선=1 1 1, 보조 대각선=1 1 1

3가지 값 모두 공통입니다. 개수=3

입력 - 행렬[][5] ={{1, 4, 4, 1}, {3, 4, 4, 6}, {1, 1, 1, 4}, {1, 9, 9, 2}};

출력 − 대각선의 행별 공통 요소:3

설명 − 행렬은 다음과 같습니다.

1 4 4 1
3 4 4 6
1 1 1 4
1 9 9 2

기본 대각선=1 4 1 2, 보조 대각선=1 4 1 1

처음 3개의 값은 공통입니다. 개수=3

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

이 접근 방식에서 우리는 먼저 행 0에서 행 방향으로 정방 행렬을 탐색할 것입니다. 각 행에 대해 요소 M[ i ][ i ]가 M[ i ][ size-i-1 ]과 같은지 확인합니다. 그렇다면 두 대각선의 공통 요소는 카운트를 증가시킵니다.

  • 입력 행렬 Matrix[][5]를 가져옵니다.

  • 크기를 설정합니다.

  • countElement(int mt[][5], int size) 함수는 입력 행렬과 크기를 가져와서 기본 및 보조 대각선 모두에서 공통 값의 개수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • for 루프를 사용하여 i=0에서 i

    로 트래버스
  • mt[i][i] ==mt[i][size-i-1]이면 카운트를 증가시킵니다.

  • 마지막에 결과로 카운트를 반환합니다.

  • 메인에 결과를 출력하세요.

예시

#include <iostream>
using namespace std;
int countElement(int mt[][5], int size){
   int count = 0;
   for (int i=0;i<size;i++){
      if (mt[i][i] == mt[i][size-i-1]){
         count=count+1;
      }
   }
   return count;
}
int main(){
   int Matrix[][5] = {{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};
   int size=3;
   cout<<"Row-wise common elements in diagonals:"<<countElement(Matrix, size);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Row-wise common elements in diagonals:3