Bài toán: Đếm số chính phương trong ma trận
Input: ma trận a có n dòng, n cột
Xử lý:
Viết hàm tìm số chính phương
Các bạn xêm tại đây:
Input: n
Output: số chính phương 1, không phải số chính phương 0
Hàm đếm số chính phương
Duyệt mảng, nếu số chính phương bằng 1 thì đếm +1
Duyệt hết mảng sẽ tìm được có tất cả bao nhiêu số chính phương
Output: đếm
int DemSCP(int a[][MAX], int m, int n) { int dem=0,i,j; for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(SoChinhPhuong(a[i][j])==1) { dem++; } } } return dem; }
Chương trình
#include<stdio.h> #include<conio.h> #include<math.h> #define MAX 100 void nhapmang(int a[][MAX], int &m, int &n); void xuatmang(int a[][MAX], int m, int n); int SoChinhPhuong(int n); int DemSCP(int a[][MAX], int m, int n); void main() { int a[MAX][MAX], m,n,x,vtd,vtc; nhapmang(a,m,n); printf("\nnoi dung cua ma tran\n"); xuatmang(a,m,n); int kq=DemSCP(a,m,n); printf("\nTat ca so chinh phuong co trong ma tran la: %d",kq); printf("\nChuc Ban hoc tot"); getch(); } void nhapmang(int a[][MAX], int &m, int &n) { int i,j; do { printf("nhap vao so dong cua ma tran: "); scanf("%d",&m); }while(m<=0); do { printf("nhap vao so cot cua ma tran: "); scanf("%d",&n); }while(n<=0); for( i=0;i<m;i++) { for( j=0;j<n;j++) { printf("\nso phan tu a[%d][%d]: ",i,j); scanf("%d",&a[i][j]); } } } void xuatmang(int a[][MAX], int m, int n) { for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { printf("%5d",a[i][j]); } printf("\n"); } } int SoChinhPhuong(int n) { int a; a=sqrt(float(n)); if(n>3) { if(a*a==n) return 1; else return 0; } else return 0; } int DemSCP(int a[][MAX], int m, int n) { int dem=0,i,j; for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(SoChinhPhuong(a[i][j])==1) { dem++; } } } return dem; }
Mình chia sẽ code này đê các bạn tham khảo các vấn đề tương tự. Tuy nhiên các bạn nên tự làm lại, đừng nên copy. Nếu gặp vấn đề gì khó khăn, hoặc thắc mắc gì, các bạn có thể đặt câu hỏi ở cuối bài. Mình sẽ giải đáp.
Chúc các bạn thành công!
tại sao chỗ if(SCP(a[i][j])==1) vậy ad.
để kiểm tra xem có phải là SCP hay ko đó mà