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

Số phần tử lớn hơn giá trị trung bình đã sửa đổi trong ma trận trong C ++

Giá trị trung bình đã sửa đổi của ma trận được xác định như sau ...

(sum (tối thiểu theo hàng) + tổng (tối đa theo cột)) / (kích thước hàng + kích thước cột)

Hãy xem một ví dụ.

1 2 3
4 5 6
7 8 9

trung bình =(sum (1 + 4 + 7) + sum (7 + 8 + 9)) / (3 + 3)

Trước tiên, chúng ta phải tìm giá trị trung bình và sau đó đếm số phần tử lớn hơn giá trị trung bình.

Nếu chúng ta lấy ví dụ trên, thì chúng ta sẽ nhận được 3 làm số đếm. Có 3 phần tử lớn hơn giá trị trung bình là 6.

Thuật toán

  • Khởi tạo ma trận.

  • Tìm tổng các phần tử tối thiểu theo hàng.

  • Tìm tổng các phần tử tối đa theo cột.

  • Sau đó, tìm giá trị trung bình với công thức đã đề cập ở trên.

  • Bây giờ, hãy đếm số phần tử lớn hơn giá trị trung bình của ma trận.

Thực hiện

Sau đây là cách thực hiện thuật toán trên trong C ++

#include <bits/stdc++.h>
using namespace std;
#define m 3
#define n 3
int getElementCountGreaterThanMean(int matrix[][n]) {
   int rowSum = 0;
   for (int i = 0; i < m; i++) {
      int min = matrix[i][0];
      for (int j = 1; j < n; j++) {
         if (matrix[i][j] < min){
            min = matrix[i][j];
         }
      }
      rowSum += min;
   }
   int colSum = 0;
   for (int i = 0; i < n; i++) {
      int max = matrix[0][i];
      for (int j = 1; j < m; j++) {
         if (max < matrix[j][i]) {
            max = matrix[j][i];
         }
      }
      colSum += max;
   }
   int mean = (rowSum + colSum) / (m + n);
   int count = 0;
   for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
         if (mean < matrix[i][j]) {
            count++;
         }
      }
   }
   return count;
}
int main() {
   int matrix[m][n] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
   cout << getElementCountGreaterThanMean(matrix) << endl;
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

3