Hàm tính trung bình các số chẵn và chia hết cho 3 trong mảng C/C++

ham tinh gia tri trung binh cac so chan va chia het cho 3 1

Bài viết này, mình sẽ chia sẻ cho các bạn cách giải bài toán về viết hàm tính trung bình các số chẵn và chia hết cho 3 trong C/C++.

Bài viết là bài số 7 trong chuỗi 67 bài tập lập trình C của mình.

1. Giới thiệu bài toán

Đề bài:

Viết hàm tính giá trị trung bình các số chẵn và chia hết cho 3 trong mảng một chiều a có n phần tử. Hàm trả về giá trị trung bình của các phần tử thỏa mãn. Ngược lại hàm trả về giá trị 0.

Để bài trên là một trong những đề bài hay và đơn giản. Nó giúp các bạn mới học lập trình làm chủ được ngôn ngữ lập trình C/C++

2. Giải quyết bài toán

Để giải được bài toán này, bạn đọc phải nắm được kiến thức về các cú pháp, vòng lặp (for, do while. . .)

2.1 Hàm tính giá trị trung bình các số chẵn và chia hết cho 3 trong mảng code C/C++

Đầu tiên bạn phải hiểu thế nào là số chẵn: Số chẵn là số chia hết cho 2. Tức là a[i]%2==0

Số chia hết cho 3 tức: a[i]%3==0 (phép chia cho 3 lấy phần dư =0)

Xong phần điều kiện thỏa mãn.

Viết hàm tính giá trị trung bình:

Phần tính trung bình. Mình sẽ khai báo 3 biến, một biến tổng, một biến đếmbiến trung bình

Biến tổng dùng để tính tổng các giá trị thỏa mãn điều kiện

Biến đếm dùng để đếm các giá trị thỏa mãn.

Biến trung bình là biến lưu kết quả phép chia tổng/đếm

Nếu đếm = 0 tức là mảng không có phần tử nào thỏa mãn. return 0.

Code C/C++:

float tinhtb(int a[], int n){
	float tb, tong=0;
	int dem=0;
	for(int i=0;i<n;i++){
		if(a[i]%2==0 &amp;&amp; a[i]%3==0){
			tong=tong+a[i];
			dem++;
		}
	}
	
	if(dem==0)
		return 0;
	else
		{
			tb=tong/dem;
			return tb;
		}
}

2.2 Chương trình hoàn chỉnh

Để có chương trình hoàn chỉnh bạn cần thêm phẩn nhập xuất mảng, các cấu trúc mặc định cần có của chương trình C/C+

2.2.1 Code C

#include<stdio.h>
void nhap(int a[], int &amp;n){
	do{
		printf("Nhap n: ");
		scanf("%d",&amp;n);
	}
	while(n<2||n>99);
	
	for(int i=0; i<n; i++){
		printf("a[%d]: ",i);
		scanf("%d",&amp;a[i]);
	}
}

void xuat(int a[], int n){
	printf("Mang vua nhap la: \n");
	for(int i=0;i<n;i++){
		printf("%5d",a[i]);
	}
}

float tinhtb(int a[], int n){
	float tb, tong=0;
	int dem=0;
	for(int i=0;i<n;i++){
		if(a[i]%2==0 &amp;&amp; a[i]%3==0){
			tong=tong+a[i];
			dem++;
		}
	}
	
	if(dem==0)
		return 0;
	else
		{
			tb=tong/dem;
			return tb;
		}
}
int main(){
	int a[100];
	int n;
	nhap(a,n);
	xuat(a,n);
	printf("\nGia tri trung binh la: %0.2f",tinhtb(a,n));	
	return 0;
}

2.2.2 Code C++

#include<bits/stdc++.h>
using namespace std;
void nhap(int a[], int &amp;n){
	do{
		cout<<("Nhap n: ");
		cin>>n;
	}
	while(n<2||n>99);
	for(int i=0; i<n; i++){
		cout<<"a["<<i<<"]: ";
		cin>>a[i];
	}
}

void xuat(int a[], int n){
	cout<<"Mang vua nhap la:\n";
	for(int i=0;i<n;i++){
		cout<<"  "<<a[i];
	}
}

float tinhtb(int a[], int n){
	float tb, tong=0;
	int dem=0;
	for(int i=0;i<n;i++){
		if(a[i]%2==0 &amp;&amp; a[i]%3==0){
			tong=tong+a[i];
			dem++;
		}
	}
	
	if(dem==0)
		return 0;
	else
		{
			tb=tong/dem;
			return tb;
		}
}
int main(){
	int a[100];
	int n;
	nhap(a,n);
	xuat(a,n);
	cout<<"\nGia tri trung binh la: "<<setprecision(2)<<fixed<<tinhtb(a,n);	
	return 0;
}

Khi chạy một trong hai chương trình bên trên sẽ cho kết quả sau:

ham tinh gia tri trung binh cac so chan va chia het cho 3 2

Trong ví dụ trên, có 3 phần tử của mảng thỏa mãn là: 6, 12, 30 có tổng là 48
Giá trị trung bình sẽ là 16.

Một ví dụ cho việc nhập vào mảng không có phần tử nào thỏa mãn điều kiện:

ham tinh gia tri trung binh cac so chan va chia het cho 3 4

như vậy là mình đã giúp các bạn giải quyết xong bài toán. Các bạn có vướng mắc gì đừng ngại comment xuống dưới bài viết nhé.

Xem tiếp Bài 8: Hàm tính giá trị trung bình các số lẻ và chia hết cho 5

Xem lại bài 6: Hàm tính trung bình các số chính phương trong mảng C/C++

Tải về file 67 bài tập lập trình C/C++

Trong quá trình tham khảo bài viết, làm bài tập. Bạn đọc có bất kì thắc mắc, ý kiến nào đừng ngại comment xuống dưới bài viết đề mình hỗ trợ nhé!

Rất mong nhận được ý kiến đánh giá của bạn đọc để bài viết của mình được hoàn thiện hơn!

LEAVE A REPLY

Please enter your comment!
Please enter your name here