Menu
CoddyTech

Ôn tập: các số duy nhất

Thuộc phần Logic và luồng chương trình trong hành trình C++ của Coddy. Bài học 40 trên 56.

challenge icon

Thử thách

Dễ

Tạo một chương trình đọc một dãy số nguyên (integer) và dùng std::set để tự động loại bỏ các giá trị trùng lặp, sau đó in ra số lượng số không trùng lặp. Qua đó, bạn sẽ thấy ưu điểm chính của tập hợp (set): lưu giữ các phần tử (element) không trùng lặp mà không cần tự kiểm tra giá trị trùng.

Chương trình sẽ nhận các đầu vào sau:

  • Một số nguyên n cho biết có bao nhiêu số sẽ được nhập
  • Sau đó là n số nguyên cần xử lý

Chương trình cần:

  1. Tạo một std::set<int> rỗng
  2. Đọc số lượng số nguyên sẽ được nhập
  3. Dùng một vòng lặp để đọc từng số nguyên và chèn số đó vào tập hợp bằng phương thức .insert()
  4. Sau khi xử lý tất cả các số, dùng phương thức .size() để lấy số lượng số không trùng lặp
  5. In ra kết quả cho biết có bao nhiêu số không trùng lặp

Dùng chính xác định dạng đầu ra sau:

Unique numbers: [count]

Tập hợp sẽ tự động loại bỏ các giá trị trùng lặp. Khi bạn thử chèn một số đã có trong tập hợp, tập hợp sẽ bỏ qua thao tác chèn trùng đó. Vì vậy, bạn không cần tự kiểm tra giá trị trùng lặp; chỉ cần chèn tất cả các số và để tập hợp tự đảm bảo tính duy nhất. Kích thước cuối cùng của tập hợp chính là số lượng số khác nhau trong đầu vào.

Tự làm thử

#include <iostream>
#include <set>
using namespace std;

int main() {
    // Đọc số lượng số nguyên
    int n;
    cin >> n;
    
    // Tạo một tập hợp rỗng để lưu các số nguyên không trùng lặp
    set<int> uniqueNumbers;
    
    // TODO: Viết code của bạn ở đây
    // Dùng vòng lặp để đọc n số nguyên và thêm chúng vào tập hợp
    
    // In kết quả ra
    cout << "Unique numbers: " << uniqueNumbers.size() << endl;
    
    return 0;
}

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C++ online