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

Chương trình C ++ để kiểm tra xem nó có phải là Ma trận thưa thớt hay không

Ma trận thưa thớt là ma trận trong đó phần lớn các phần tử bằng 0. Nói cách khác, nếu hơn một nửa số phần tử trong ma trận bằng 0, nó được gọi là ma trận thưa. Ví dụ -

Ma trận cho dưới đây chứa 5 số 0. Vì số lượng các số 0 nhiều hơn một nửa số phần tử của ma trận nên nó là một ma trận thưa thớt.

1 0 2
5 0 0
0 0 9

Một chương trình để kiểm tra xem nó có phải là một ma trận thưa thớt hay không như sau.

Ví dụ

#include<iostream>
using namespace std;
int main () {
   int a[10][10] = { {2, 0, 0} , {0, 3, 8} , {0, 9, 0} };
   int i, j, count = 0;
   int r = 3, c = 3;
   for (i = 0; i < r; ++i) {
      for (j = 0; j < c; ++j) {
         if (a[i][j] == 0)
         count++;
      }
   }
   cout<<"The matrix is:"<<endl;
   for (i = 0; i < r; ++i) {
      for (j = 0; j < c; ++j) {
         cout<<a[i][j]<<" ";
      }
      cout<<endl;
   }
   cout<<"There are "<<count<<" zeros in the matrix"<<endl;
   if (count > ((r * c)/ 2))
   cout<<"This is a sparse matrix"<<endl;
   else
   cout<<"This is not a sparse matrix"<<endl;
   return 0;
}

Đầu ra

The matrix is:
2 0 0
0 3 8
0 9 0
There are 5 zeros in the matrix
This is a sparse matrix

Trong chương trình trên, một vòng lặp for lồng nhau được sử dụng để đếm số lượng các số không trong ma trận. Điều này được chứng minh bằng cách sử dụng đoạn mã sau.

for (i = 0; i < r; ++i) {
   for (j = 0; j < c; ++j) {
      if (a[i][j] == 0)
      count++;
   }
}

Sau khi tìm thấy số lượng các số không, ma trận được hiển thị bằng cách sử dụng vòng lặp for lồng nhau. Điều này được hiển thị bên dưới -

cout<<"The matrix is:"<<endl;
for (i = 0; i < r; ++i) {
   for (j = 0; j < c; ++j) {
      cout<<a[i][j]<<" ";
   }
   cout<<endl;
}

Cuối cùng, số lượng các số 0 được hiển thị. Nếu số lượng các số không nhiều hơn một nửa các phần tử trong ma trận, thì ma trận được hiển thị là ma trận thưa nếu không thì ma trận không phải là ma trận thưa.

cout<<"There are "<<count<<" zeros in the matrix"<<endl;
if (count > ((r * c)/ 2))
cout<<"This is a sparse matrix"<<endl;
else
cout<<"This is not a sparse matrix"<<endl;