Hàm tính giá trị trung bình các số dương trong C

viet ham tinh gia tri trung binh cac so duong 1

Hàm tính giá trị trung bình các số dương có trong mảng một chiều là bài viết số 3 trong list 67 bài toán giải chi tiết đề cương nhập môn lập trình của mình.

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

Bài toán viết hàm tính giá trị trung bình là bài toán thường gặp trong số các bài toán cơ bản trong việc luyện tập lập trình C.

Đề bài:

Viết hàm tính giá trị trung bình các phần tử có giá trị dương 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ử có giá trị dương. Ngược lại hàm trả về giá trị 0.

Đây là một đề bài luyện tập khá hay và đơn giản, hãy cố gắng giải quyết nó nhé!

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

Bài toán đòi hỏi bạn đọc cần nắm vững kiến thức, cấu trúc, cú pháp cơ bản của ngôn ngữ lập trình C. Về mặt toán học, bài toán này tương đối đơn giản.

2.1 Ý tưởng giải quyết bài toán

Bài toán tính giá trị trung bình của các số dương trong mảng một chiều a có n phần tử có tư tưởng giống mọi bài toán tính giá trị trung bình khác

  • Duyệt mảng, tìm phần tử thỏa mãn là số dương (>=0)
  • Tính tổng các giá trị thỏa mãn
  • Đếm số các giá trị thỏa mãn sau đó chia tb

Cụ thể cách làm:

Do hàm yêu cầu trả về giá trị nên mình sẽ dùng kiểu float.

Khai báo 3 biến trong hàm gồm: biến tong, dem tb.

Khi duyệt mảng, tìm thấy phần tử nào có giá trị >=0, tăng biến dem, cộng thêm vào biến tong

2.2 Code gợi ý giải bài toán

Phần code hàm tính giá trị trung bình các số dương có trong mảng:

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

Đoạn code bên trên đã đủ cả điều kiện thứ hai. Tức là khi nếu mảng không có giá trị nào lớn hơn 0 hàm sẽ trả về giá trị 0.

Bài code hoàn chỉnh của mình cho các bạn tham khảo:

#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]>=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;
}

Khi chạy chương trình với mã code trên sẽ thu được kết quả như sau:

viet ham tinh gia tri trung binh cac so duong 2

1 ví dụ nữa nè:

viet ham tinh gia tri trung binh cac so duong 3

Để hiểu chi tiết hơn, bạn đọc xem video dưới đây:

Đừng bỏ lỡ những bài tiếp theo của mình nhé

Xem tiếp Bài 4: Hàm tính giá trị trung bình số nguyên tố

Xem lại Bài 2: Hàm tính giá trị trung bình các số âm

Tải về đề cương nhập môn lập trình

Mọi thắc mắc trong quá trình làm bài tập liên quan đến bài viết, bạn đọc comment trực tiếp xuống phía dưới để chúng mình hỗ trợ.

Rất mong nhận được ý kiến đánh giá, các đóng góp của bạn đọc để bài viết được hoàn thiện hơn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here