Đếm số chính phương trong ma trận

2
7193

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:

Số chính phương là gì ? các hàm tìm số chính phương

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!

2 COMMENTS

This site uses Akismet to reduce spam. Learn how your comment data is processed.