Đếm số lần xuất hiện của phần tử trong mảng

0
25670
dem so lan xuat hien cua phan tu trong mang 1

Bải tập luyện tập lập trình C/C++ số 16 về chủ đề đếm số lần xuất hiện của phần tử. Bài tập này ở mức dễ giúp bạn nắm chắc ngôn ngữ lập trình hơn.

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

Đề bài:

Viết hàm đếm số lần xuất hiện của phần tử x trong mảng một chiều a có n phần tử.

Bài toán trên ở mức vận dụng dễ, bạn chỉ cần nắm được cơ bản ngôn ngữ lập trình C/C++ hoặc bất kì ngôn ngữ nào khác là có thể làm được.

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

Bài toán này giải rất đơn giản. Mục đích chúng ta cần tìm xem phần tử x nhập vào từ bàn phím xuất hiện bao nhiêu lần.

Ý tưởng giải quyết:

Khai báo một biến đếm (count), duyệt mảng từ 0 đến n. Kiểm tra điểu kiện nếu a[i]==x, tăng biến đếm lên 1 đơn vị

Code hàm đếm số phần tử xuất hiện:

void CountX(int a[], int n){
	int count =0, x;
	
	cout<<"\nNhap phan tu can dem: ";
	cin>>x;
	for(int i=0;i<n;i++){
		if(a[i]==x)
			count ++;
	}
	
	cout<<"\nPhan tu "<<x<<"xuat hien "<<count<<" lan"<<endl;
}

Trong hàm mình viết luôn phần nhập phần tử cần đếm và phần in kết quả ra màn hình.

Thuật toán đếm này theo mình thấy đó là thuật toán dễ nhất, bạn đọc cần nắm vững và hiểu được bài toán đơn giản này.

Dưới đây là code hoàn chỉnh:

Code C++:

#include<bits/stdc++.h>
using namespace std;
void nhap(int a[], int &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){
	for(int i=0;i<n;i++){
		cout<<"  "<<a[i];
	}
}
void CountX(int a[], int n){
	int count =0, x;
	
	cout<<"\nNhap phan tu can dem: ";
	cin>>x;
	for(int i=0;i<n;i++){
		if(a[i]==x)
			count ++;
	}
	
	cout<<"\nPhan tu "<<x<<"xuat hien "<<count<<"lan"<<endl;
}

int main(){
	int a[100];
	int n;
	nhap(a,n);
	CountX(a,n);
	return 0;
}

Bạn đọc có thể tham khảo phần Nhập xuất mảng trong C tại đây.

code C:

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

//void xuat(int a[], int n){
//	for(int i=0;i<n;i++){
//		printf("%5d",a[i]);
//	}
//}

void CountX(int a[], int n){
	int count =0, x;
	
	printf("\nNhap phan tu can dem: ");
	scanf("%d",&x);
	for(int i=0;i<n;i++){
		if(a[i]==x)
			count ++;
	}
	
	printf("Phan tu %d xuat hien %d lan",x,count);
}
int main(){
	int a[100];
	int n;
	nhap(a,n);
 	CountX(a,n);
	return 0;
}

Kết quả của chạy chương trình:

dem so lan xuat hien cua phan tu trong mang 2

Bài viết của mình đến đây là hết, cảm ơn bạn đã quan tâm bài viết. Đừng bỏ lỡ những bài tập lập trình tiếp theo nhé!

Xem tiếp bài 17: Chèn phần tử x vào vị trí k trong mảng

Xem lại bài 15: Tìm vị trí xuất hiện của phần tử

Tải về file 67 bài tập để cương lập trình C/C++

Rất mong nhận được ý kiến đánh giá, phàn hồi từ phía bạn đọc về bài chia sẻ của mình.

LEAVE A REPLY

Please enter your comment!
Please enter your name here