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á biểu thức hậu tố

    Máy ảo ngăn xếp (stack machine) trong trình biên dịch thực thi trực tiếp mã hậu tố: gặp toán hạng thì đẩy vào ngăn xếp, gặp toán tử thì lấy ra đúng số toán hạng cần thiết, tính toán rồi đẩy kết quả trở lại.

    Cho một biểu thức hậu tố hợp lệ chỉ gồm số nguyên (có thể âm sau khi tính) và các toán tử hai ngôi +,−,×,÷+, -, \times, \div+,−,×,÷ (ký hiệu + - * /). Hãy tính giá trị cuối cùng của biểu thức.

    Phép chia ÷\div÷ là chia lấy phần nguyên, làm tròn về 0 (truncation), giống phép chia số nguyên trong C/C++, ví dụ 7÷2=37 \div 2 = 37÷2=3, (−7)÷2=−3(-7) \div 2 = -3(−7)÷2=−3. Nếu tại bất kỳ bước nào xảy ra chia cho 0, in ra ERROR và dừng.

    Ví dụ: với 2 3 + 4 * (tức (2+3)×4(2+3) \times 4(2+3)×4), kết quả là 20.

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

      Một dòng duy nhất chứa biểu thức hậu tố, các token cách nhau bởi đúng một khoảng trắng. Toán hạng đầu vào là số nguyên không âm.

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

      In ra một số nguyên là kết quả của biểu thức, hoặc in ERROR nếu có phép chia cho 0.

    Ví dụ:

    Đầu vào:

    5

    Đầu ra:

    5
    

    Đầu vào:

    3 4 -

    Đầu ra:

    -1
    

    Đang tải editor...