---
# System prepended metadata

title: 'Đề 3 (Phiên bản với mảng số):'

---

# Đề 3:

- **Câu 1**:
    - Tạo chương trình với hàm `main` (1đ)
    - Khai báo và khởi tạo mảng số nguyên `arrNumbers` với các phần tử sau: 5, 12, 7, 3, 9 (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đ)
        ```markdown
        -------------------------------------
        | Array Operations                 |
        -------------------------------------
        | 1. Calculate factorial           |
        | 2. Find prime numbers            |
        | 3. Sort in descending order      |
        | 4. Calculate sum                 |
        | 5. Reverse array order           |
        | 6. Calculate product             |
        | 7. Clear screen                  |
        | 8. Exit                          |
        -------------------------------------
        ```
    - Viết hàm `calculateFactorial` không có giá trị trả về và có hai tham số là một mảng số nguyên `numbers` và kích thước của mảng `size`. Hàm này sẽ tính giai thừa của các số trong mảng và in ra kết quả như sau: (2đ)
        ```markdown
        ------------------------------
        | Number | Factorial         |
        ------------------------------
        |   5    |       120         |
        |   12   |   479001600       |
        |   7    |      5040         |
        |   3    |        6          |
        |   9    |     362880        |
        ------------------------------
        ```
    - Viết hàm `findPrimeNumbers` không có giá trị trả về và có hai tham số là một mảng số nguyên `numbers` và kích thước của mảng `size`. Hàm này sẽ tìm và in ra những số nguyên tố trong mảng (2đ)
    - Viết hàm `sortDescending` không có giá trị trả về và có hai tham số là một mảng số nguyên `numbers` và kích thước của mảng `size`. Hàm này sẽ sắp xếp các số trong mảng theo chiều giảm dần và in ra kết quả (2đ)
    - Viết hàm `calculateSum` không có giá trị trả về và có hai tham số là một mảng số nguyên `numbers` và kích thước của mảng `size`. Hàm này sẽ tính tổng của các số trong mảng và in ra kết quả (2đ)
    - Viết hàm `reverseArrayOrder` không có giá trị trả về và có hai tham số là một mảng số nguyên `numbers` và kích thước của mảng `size`. Hàm này sẽ đảo ngược trật tự các phần tử trong mảng và in ra kết quả (1đ)
    - Viết hàm `calculateProduct` không có giá trị trả về và có hai tham số là một mảng số nguyên `numbers` và kích thước của mảng `size`. Hàm này sẽ tính tích của các số trong mảng và in ra kết quả (1đ)
- **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 `calculateFactorial` với tham số là mảng `arrNumbers` và kích thước của mảng để tính giai thừa của các số trong mảng và in kết quả (1đ)
            - Nếu người dùng chọn 2: Gọi hàm `findPrimeNumbers` với tham số là mảng `arrNumbers` và kích thước của mảng để tìm và in ra các số nguyên tố trong mảng (1đ)
            - Nếu người dùng chọn 3: Gọi hàm `sortDescending` với tham số là mảng `arrNumbers` và kích thước của mảng để sắp xếp các số trong mảng theo chiều giảm dần và in ra kết quả (1đ)
            - Nếu người dùng chọn 4: Gọi hàm `calculateSum` với tham số là mảng `arrNumbers` và kích thước của mảng để tính tổng của các số trong mảng và in kết quả (1đ)
            - Nếu người dùng chọn 5: Gọi hàm `reverseArrayOrder` với tham số là mảng `arrNumbers` và kích thước của mảng để đảo ngược trật tự các phần tử trong mảng và in kết quả (1đ)
            - Nếu người dùng chọn 6: Gọi hàm `calculateProduct` với tham số là mảng `arrNumbers` và kích thước của mảng để tính tích của các số trong mảng và in kết quả (1đ)
            - Nếu người dùng chọn 7: Xóa màn hình bằng cách gọi hàm tương ứng (0.5đ)
            - Nếu người dùng chọn 8: Kết thúc chương trình (0.5đ)
