Đếm số phần tử khác nhau trong mảng code C/C++ – https://final-blade.com

Bài tập số 18: Đếm số phần tử khác nhau trong mảng một chiều với ngôn ngữ C/C++. Bài toán giúp bạn hoàn thiện hơn ngôn ngữ lập trình của mình.

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

Đề bài :

Viết hàm đếm số lượng các phần tử khác nhau trong mảng 1 chiều a có n phần tử. Ví dụ: 1 6 2 3 2 4 2 6 5 ==> Có 6 phần tử khác nhau là 1 6 2 3 4 5.

Một bài toán cần vận dụng khá nhiều kiến thức và kỹ năng lập trình để xử lý. Giải được bài toán này, chính tỏ kỹ năng và kiến thức lập trình C / C + + trong thao tác với mảng tương đối vững .

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

Để giải được bài toán nhu yếu bạn đọc nắm vững kỹ năng và kiến thức về vòng lặp for và mảng, bài này cần vận dụng nhiều hơn những bài tập khác .

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

Ý tưởng giải bài này của mình khá trừu tượng :

Tách các phần tử khác các phần tử còn lại ra mảng thứ 2. Số phần tử của mảng thứ 2 chính là số phần tử khác nhau trong mảng ban đầu.

Có thể bạn chưa biết cách tách, rồi so sánh xem phần tử khác nhau kiểu gì, từ từ mình sẽ lý giải nhé !
Mình sẽ viết hàm trả về số lượng phần tử khác nhau. Nếu thích bạn hoàn toàn có thể in luôn những phần tử khác nhau giống với đề bài .
Trong hàm cần khai báo những thứ sau :

  • Một khai báo mảng b (tối đa n phần tử cho đỡ tốn bộ nhớ)
  • Một biến x =1 là số phần tử ban đầu

Mình sẽ gán phần tử đầu tiên của mảng b là phần tử đầu tiên của mảng a để thực hiện so sánh. b[0]=a[0]

Cho vòng lặp for chạy từ vị trí 1 tới cuối mảng a .

Trong vòng lặp for ta tiến hành so sánh a[i] với các phần tử trong mảng b bằng một vòng lặp for và một biến đếm. Nếu biến đếm này =0 tức là không có phần tử giống. Tiến hành thêm phần tử vào mảng b và tăng x.

Đọc thì có vẻ khó hiểu nhưng bạn xem code bên dưới là hiểu ngay nhé !

2.2 Hàm đếm số phần tử khác nhau trong mảng

Dựa trên ý tưởng sáng tạo của mình bên trên, mình code hàm đếm số phần tử khác nhau sau :

int Count(int a[], int n){
	int b[n];
	int x=1;
	b[0]=a[0];
	
	for(int i=1;iHàm trả về giá trị là số phần tử khác nhau trong mảng .
Nếu bạn muốn viết hàm đưa ra giá trị và in những phần tử khác nhau thì đơn thuần, thêm hàm xuat mảng là được. ( Mình sẽ sửa ở phần chương trình hoàn hảo cho bạn xem ) .

2.3 Chương trình đếm số phần tử khác nhau trong mảng

Bạn thêm phần nhập xuất mảng để làm việc với mảng, tùy chỉnh kết quả theo ý thích của bạn nhé!

Code C + + tìm hiểu thêm : ( quan tâm code C chỉ cần sửa một chút ít về cú pháp câu lệnh nhập xuất là được )
#include
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>a[i];
	}
}

void xuat(int a[], int n){
	for(int i=0;iKết quả của chạy chương trình trên :
dem so phan tu khac nhau trong mang

Bài viết đến đây là hết, rất mong nhận được ý kiến đóng góp, đánh giá bài viết của mình để hoàn thiện hơn.

Xem tiếp bài 19: Tìm phần tử xuất hiện nhiều nhất trong mảng

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

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