Tính tổng/tích/trung bình các phần tử trên đường chéo chính

0
8418

Bài toán: Tính tổng/tích/trung bình các phần tử trên đường chéo chính

Input: ma trận a có n dòng, n cột

Xử lý: ma trận a có n dòng, n cột

Duyệt ma trận, tính

sum=a[0][0]+a[1][1]+a[2][2]+a[3][3]+…+a[n-1][n-1]

Tích=a[0][0]xa[1][1]xa[2][2]xa[3][3]x…+x[n-1][n-1]

Avg=sum chia cho số phần tử trên đường chéo chính

Output: sum,tích,avg

Hàm tính tổng

double Tong(int a[][MAX], int n)
{
	double sum=0;
	for(int i=0;i<n;i++)
		sum=sum+a[i][i];
	return sum;
}

Hàm tính tích

double Tich(int a[][MAX], int n)
{
	double tich=1;;
	for(int i=0;i<n;i++)
		tich=tich*a[i][i];
	return tich;
}

Hàm tính trung bình

double TrungBinh(int a[][MAX], int n)
{
	double sum=0,avg;
	for(int i=0;i<n;i++)
		sum=sum+a[i][i];
	avg=double(sum/n);
	return avg;
}

Chương trình

#include<conio.h>
#include<stdio.h>
#include<math.h>
#define MAX 100
void nhapmatran(int a[][MAX], int &n);
void xuatmatran(int a[][MAX], int n);
double Tong(int a[][MAX], int n);
double Tich(int a[][MAX], int n);
double TrungBinh(int a[][MAX], int n);
void main()
{
	int a[MAX][MAX],n;
	nhapmatran(a,n);
	printf("\nNoi dung cua ma tran\n");
	xuatmatran(a,n);
	double kq=Tong(a,n);
	printf("\nTong cac phan tu tren duong cheo chinh %8.2f",kq);
	double kq1=Tich(a,n);
	printf("\nTich cac phan tu tren duong cheo chinh %8.2f",kq1);
	double kq2=TrungBinh(a,n);
	printf("\nTrung binh cac phan tu tren duong cheo chinh %8.2f",kq2);
	getch();
}
void nhapmatran(int a[][MAX], int &n)
{
	do
	{
		printf("\nNhap n: ");
		scanf("%d",&n);
	}while(n<=0 || n>MAX);
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		{
			printf("\nSo phan tu a[%d][%d] la: ",i,j);
			scanf("%d",&a[i][j]);
		}
}
void xuatmatran(int a[][MAX], int n)
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			printf("%5d",a[i][j]);
		}
		printf("\n");
	}
}
double Tong(int a[][MAX], int n)
{
	double sum=0;
	for(int i=0;i<n;i++)
		sum=sum+a[i][i];
	return sum;
}
double Tich(int a[][MAX], int n)
{
	double tich=1;;
	for(int i=0;i<n;i++)
		tich=tich*a[i][i];
	return tich;
}
double TrungBinh(int a[][MAX], int n)
{
	double avg;
	avg=double (Tong(a,n)/n);
	return avg;
}

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!

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