Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Định giá trực tiếp biểu thức trung tố có kiểm tra ngoặc

    Một số trình thông dịch định giá biểu thức trung tố trực tiếp bằng phân tích đệ quy xuống (recursive descent), không cần chuyển qua hậu tố, nhưng trước tiên phải kiểm tra tính hợp lệ của dấu ngoặc.

    Cho biểu thức trung tố gồm toán hạng là số thực không âm (dạng số nguyên hoặc có phần thập phân, ví dụ 12, 3.5), các toán tử hai ngôi +,−,×,÷,^+,-,\times,\div,\hat{}+,−,×,÷,^ (+ - * / ^, ^\hat{}^ kết hợp phải, ưu tiên cao nhất, phép chia là chia thực) và dấu ngoặc đơn. Không có dấu trừ một ngôi.

    • Nếu dấu ngoặc không cân bằng (thừa/thiếu ngoặc mở hoặc đóng), in ERROR.
    • Nếu trong quá trình tính toán xảy ra chia cho 0, in ERROR.
    • Ngược lại, in giá trị biểu thức, làm tròn và hiển thị đúng 4 chữ số thập phân.

    Ví dụ: ( 1 + 2 ) * 3 cho kết quả 9.0000.

    • Định dạng đầu vào:

      Một dòng duy nhất chứa biểu thức, các token cách nhau bởi đúng một khoảng trắng.

    • Định dạng đầu ra:

      In ra giá trị biểu thức với đúng 4 chữ số thập phân (ví dụ 9.0000), hoặc in ERROR nếu ngoặc không hợp lệ hoặc có chia cho 0.

    Ví dụ:

    Đầu vào:

    3 + 4 * 2

    Đầu ra:

    11.0000
    

    Đầu vào:

    ( 1 + 2 ) * 3

    Đầu ra:

    9.0000
    

    Đang tải editor...