Hướng dẫn cách liệt kê các phần tử xuất hiện trong mảng C++. Bạn sẽ học được cách liệt kê các phần tử xuất hiện một lần trong mảng C++, cũng như cách liệt kê các phần tử xuất hiện nhiều hơn 1 lần sau bài học này.
Liệt kê các phần tử duy nhất trong mảng C++
Để liệt kê các phần tử duy nhất trong mảng C++, chúng ta cần xóa đi tất cả các phần tử trùng trong mảng ban đầu. Khi đó kết quả còn lại chính là các phần tử duy nhất có trong mảng đó.
Để xóa phần tử trùng trong mảng C++, chúng ta sẽ sử dụng tới một trong 2 cách mà Kiyoshi đã hướng dẫn trong bài:
/*Tạo macro SIZE_OF_ARRAY để lấy độ dài (số phần tử) của mảng chỉ định*/ #define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))
/*Tạo hàm in phần tử trong mảng*/ voidshow_array(intarray[], int length){ for(short i = 0; i < length; i++) cout << array[i] <<' '; cout << endl; }
/*Tạo hàm so sánh tăng dần sử dụng trong hàm qsort*/ intcompareIntAsc(constvoid* a, constvoid* b) { int aNum = *(int*)a; int bNum = *(int*)b;
return aNum - bNum; }
/*Tạo hàm xoá phần tử trùng lặp trong mảng đã sắp xếp*/ voidarray_unique(int* array, size_t size){ size_t end = 0;
for (size_t i = 1; i < size; ++i) { if (array[i] != array[end]) { ++end; array[end] = array[i]; } } //Liệt kê các phần tử xuất hiện một lần trong mảng C++ show_array(array, end+1); }
// Sắp xếp các mảng theo thứ tự tăng dần qsort(array1, SIZE_OF_ARRAY(array1), sizeof(int), compareIntAsc); qsort(array2, SIZE_OF_ARRAY(array2), sizeof(int), compareIntAsc); qsort(array3, SIZE_OF_ARRAY(array3), sizeof(int), compareIntAsc);
//Xoá phần tử trùng nhau và liệt kê các phần tử xuất hiện một lần trong kết quả array_unique(array1, SIZE_OF_ARRAY(array1)); array_unique(array2, SIZE_OF_ARRAY(array2)); array_unique(array3, SIZE_OF_ARRAY(array3));
return0; }
Kết quả phép **liệt kê các phần tử duy nhất trong mảng C++**như sau:
2 4 6 7 8 9 2 6 7 7
Liệt kê các phần tử xuất hiện một lần trong mảng C++
Để liệt kê các phần tử xuất hiện một lần trong mảng C++, chúng ta đơn giản kiểm tra từng phần tử xem có phần tử nào trùng với nó trong mảng ban đầu hay không.
Chúng ta có thể sử dụng vòng lặp để lấy và kiểm tra từng phần tử và liệt kê các phần tử xuất hiện một lần trong mảng C++ như sau đây:
/*Tạo macro SIZE_OF_ARRAY để lấy độ dài (số phần tử) của mảng chỉ định*/ #define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))
/*Tạo hàm liệt kê các phần tử xuất hiện một lần trong mảng C++*/ voidarray_unique(int* array, size_t size){ for (size_t i = 0; i < size; ++i) { size_t count = 0;
for (size_t j = 0; j < size; ++j) {
if (array[i] == array[j] &i!=j) { //Tìm thấy phần tử trùng nhau thì tăng biến đếm count += 1; } } /*Nếu count vẫn bằng 0 thì phần tử đang kiểm tra chỉ xuất hiện 1 lần duy nhất trong mảng*/ if(count==0) cout <<array[i] <<" "; } cout << endl; }
//Xoá phần tử trùng nhau và liệt kê các phần tử xuất hiện một lần trong kết quả array_unique(array1, SIZE_OF_ARRAY(array1)); array_unique(array2, SIZE_OF_ARRAY(array2)); array_unique(array3, SIZE_OF_ARRAY(array3));
return0; }
Kết quả phép liệt kê các phần tử xuất hiện một lần trong mảng Cnhư sau:
2 6 4 9 8 2 6
Liệt kê các phần tử xuất hiện nhiều hơn 1 lần trong mảng C++
Các phần tử xuất hiện nhiều hơn 1 lần trong mảng C++ chính là các phần tử trùng nhau.liệt
Để liệt kê các xuất hiện nhiều hơn 1 lần này, chúng ta sẽ dùng tới hàm tự tạo mà Kiyoshi đã hướng dẫn trong bài:
Và chúng ta viết hàm liệt kê các phần tử xuất hiện nhiều hơn 1 lần mảng C++ trong chương trình như sau:
#include<iostream> usingnamespacestd;
/*Tạo macro SIZE_OF_ARRAY để lấy độ dài (số phần tử) của mảng chỉ định*/ #define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))
/*Tạo hàm in phần tử trong mảng*/ voidshow_array(intarray[], int length){ for(short i = 0; i < length; i++) cout << array[i] <<' '; cout << endl; }
/*Thay đổi hàm kiểm tra phần tử trùng nhau ở phương pháp một*/ /*Và tạo hàm lấy phần tử trùng trong mảng C++*/ voidtake_duplicate_element(constint* array, size_t size){ int result[100], count=0;
for (size_t i = 0; i < size - 1; ++i) { for (size_t j = i + 1; j < size; ++j) { if (array[i] == array[j]) { result[count]=array[i]; ++ count; } } } //liệt kê các phần tử xuất hiện nhiều hơn 1 lần trong mảng C++ show_array(result, count); }
intmain(){ int array1[] = {1,2,3,3,2,5}; int array2[] = {1,1,2,3,2,5,5,8,9,6};
//liệt kê các phần tử xuất hiện nhiều hơn 1 lần trong mảng C++ take_duplicate_element(array1,SIZE_OF_ARRAY(array1)); take_duplicate_element(array2,SIZE_OF_ARRAY(array2)); return0; }
Kết quả phép liệt kê các phần tử xuất hiện nhiều hơn 1 lần mảng C++ như sau:
2 3 1 2 5
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách liệt kê các phần tử xuất hiện trong mảng C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.