Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm hàng / cột có tổng bằng tổng đường chéo trong C ++


Chúng ta được cung cấp một ma trận là mảng 2-D có các hàng và cột và nhiệm vụ là tính tổng số của tất cả các hàng và cột sao cho nó bằng tổng của ma trận chính hoặc phụ.

Đầu vào -

int arr[row][col] = {
   { 4, 1, 7 },
   { 10, 3, 5 },
   { 2, 2, 11}
}

Đầu ra - Số hàng / cột có tổng bằng tổng đường chéo là &phút; 2

Giải thích -

tổng các đường chéo chính là:4 + 3 + 11 =18 và tổng các đường chéo phụ là:7 + 3 + 2 =12. Tổng các hàng là 4 + 1 + 7 =12 (ĐÚNG), 10 + 3 + 5 =18 (TRUE), 2 + 2 + 11 =15 (FALSE) và tổng các cột là:4 + 10 + 2 =16 (FALSE), 1 + 3 + 2 =6 (FALSE), 7 + 5 + 11 =23 ( SAI). Do đó, số hàng / cột phù hợp với tổng đường chéo chính và đường chéo phụ là - 2

Đầu vào -

int arr[row][col] = {
   { 1, 2, 3 },
   { 4, 5, 2 },
   { 7, 9, 10}
}

Đầu ra - Số hàng / cột có tổng bằng tổng đường chéo là - 2

Giải thích -

tổng các đường chéo chính là:1 + 5 + 10 =16 và tổng các đường chéo phụ là:7 + 3 + 5 =15. Tổng các hàng là 1 + 2 + 3 =6 (FALSE), 4 + 5 + 2 =11 (FALSE), 7 + 9 + 10 =26 (FALSE) và tổng các cột là:7 + 4 + 1 =12 (FALSE), 9 + 5 + 2 =16 (TRUE), 3 + 2 + 10 =15 ( THÀNH THẬT). Do đó, số hàng / cột phù hợp với tổng đường chéo chính và đường chéo phụ là - 2

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Tạo mảng 2-D để tạo thành ma trận có kích thước hàng và kích thước cột

  • Tạo biến cho ma trận chính và phụ. Ngoài ra, một biến đếm để lưu trữ số lượng

  • Bắt đầu vòng lặp FOR từ i đến 0 cho đến col và j từ col - 1 đến col, tăng i và giảm j

  • Bên trong vòng lặp, đặt chính là ma trận chính + [i] [i] và phụ làm ma trận + phụ [i] [j]

  • Bắt đầu vòng lặp FOR từ i đến 0 cho đến col

  • Bên trong vòng lặp, đặt hàng thành 0 và col thành 0 và bên trong vòng lặp, bắt đầu một vòng lặp FOR khác từ j đến 0 cho đến col

  • Bên trong vòng lặp, đặt hàng là hàng + ma trận [i] [j]

  • Bên trong vòng lặp, bắt đầu một vòng lặp FOR khác từ j đến 0 cho đến col

    Bên trong vòng lặp, col thành col + matrix [j] [i]
  • Bên trong vòng lặp, hãy kiểm tra IF (hàng ==gốc) || (hàng ==phụ) sau đó tăng số lượng lên 1

  • Bên trong vòng lặp, kiểm tra IF (col ==gốc) || (col ==phụ) sau đó tăng số lượng lên 1

  • Trả lại số lượng

  • In kết quả.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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