---
# System prepended metadata

title: 'EPC - Đề 1:'

---

# Đề 1: 
- **Câu 1**: 
    - Tạo chương trình với hàm `main` (1đ)
    - Tạo mảng số nguyên `arrNum` với 10 phần tử sau: `1,7,9,14,9,16,2,1,18,1` (1đ)
    - Viết hàm `showMenu` không có giá trị trả về và không có tham số. Hàm này sẽ vẽ Menu của phần mềm như sau: (1đ)
        ```
        -------------------------------------
        | My First Application              |
        -------------------------------------
        | 1. Print numbers                  |
        | 2. Find numbers                   |
        | 3. Find average                   |
        | 4. Sort numbers by asc/desc       |
        | 5. Group by numbers               |
        | 6. Clear screen                   |
        | 7. Exit                           |
        -------------------------------------
        ```
    - Viết hàm `printNumber` không có giá trị trả về và có 2 tham số đầu vào là mảng số `numbers` và độ dài mảng `size`. Hàm này sẽ tiến hành in ra màn hình kết quả như sau: (1.5đ)
        ```
        // The last character of the string is the `!`
        Numbers : 1 , 7 , 9 , 14 , 9 , 16 , 2 , 1 , 18 , 1 !
        ```
    - Viết hàm `findNumbers` không có giá trị trả về và có 3 tham số đầu vào là một `int flag`, mảng số `numbers` và độ dài mảng `size`. Hàm này sẽ tiến hành in ra màn hình những số trong dãy số NHỎ HƠN giá trị `flag` (1.5đ)
    - Viết hàm `findAverage` trả về một giá trị `double` và mảng số `numbers` và độ dài mảng `size`. Hàm này sẽ tiến hành tính toán giá trị trung bình của mảng số trên và TRẢ VỀ giá trị đó (2.5đ)
    - Viết hàm `sortBy` không có giá trị trả về và có 3 tham số đầu vào là một `int flag`, mảng số `numbers` và độ dài mảng `size`. Hàm này sẽ tiến hành kiểm tra xem tham số `flag` nếu là số chẵn thì sẽ sắp xếp theo chiều tăng dần, nếu là số lẻ thì sắp xếp theo chiều giảm dần (2.5đ)
    - Viết hàm `groupByNumber` không có giá trị trả về và có tham số đầu vào là mảng số `numbers` và độ dài mảng `size`. Hàm này sẽ tiến hành đếm số lần xuất hiện của một số trong mảng số ban đầu như sau: (1đ)
        ```
        -----------------------
        | Number   | Count    |
        -----------------------
        | 1        | 3 Time   |
        | 7        | 1 Time   |
        | 9        | 2 Time   |
        | 14       | 1 Time   |
        | 16       | 1 Time   |
        | 2        | 1 Time   |
        | 18       | 1 Time   |
        -----------------------
        ```
- **Câu 2**: 
    - Viết chương trình chạy trong hàm `main` và triển khai các yêu cầu sau:
        - Hiển thị menu bằng cách gọi hàm `showMenu` khi bắt đầu chương trình.
        - Yêu cầu người dùng lựa chọn theo menu:
            - Nếu người dùng chọn 1: Gọi hàm `printNumber` để hiển thị các số (0.5 đ)
            - Nếu người dùng chon 2: Yêu cầu người dùng nhập vào một số, gọi hàm `findNumbers` với tham trị tương ứng và tiến hành thực hiện chức năng của hàm. (1 đ)
            - Nếu người dùng chọn 3: Gọi hàm `findAverage` với tham trị tương ứng và in kết quả dưới dạng tối đa 2 số trong phần thập phân (1 đ)
            - Nếu người dùng chon 4: Yêu cầu người dùng nhập vào một số, gọi hàm `sortBy` với tham trị tương ứng và tiến hành thực hiện chức năng của hàm. (1 đ)
            - Nếu người dùng chon 5: Yêu cầu người dùng nhập vào một số, gọi hàm `groupByNumber` với tham trị tương ứng và tiến hành thực hiện chức năng của hàm. (0.5 đ)
            - Nếu người dùng chon 6: Clear màn hình nhưng không làm tắt phần mềm. (1 đ)
            - Nếu người dùng chon 7: Tắt phần mềm. (1 đ)
            - Yêu cầu triển khai phần mềm trong vòng lặp vô hạn để mỗi khi chọn một chức năng, có thể chọn lại chức năng đó (2đ)

