thành lập từ các biến kiểu nguyên nối với nhau bằng các phép toán hai ngôi ( cộng: + , trừ : - , nhân : *) và các dấu mở ngoặc đơn ‘(‘, đóng ngoặc đơn ‘)’. Nguyên tắc đặt tên biến và thứ tự thực hiện các phép toán được thực hiện như sau:
Qui tắc đặt tên biến: Là dãy các kí tự chữ in thường hoặc kí tự số độ dài
không quá 8, kí tự bắt đầu phải là một chữ cái.
Qui tắc thực hiện phép toán: Biểu thức trong ngoặc đơn được tính trước,
phép toán nhân ‘*’ có độ ưu tiên cao hơn so với hai phép toán cộng và trừ. Hai phép toán cộng ‘+’ và trừ có cùng độ ưu tiên. Ví dụ : a * b + c phải được hiểu là: (a * b) + c.
Dạng viết không ngoặc Ba Lan cho biểu thức nguyên được định nghĩa như sau:
•Nếu e là tên biến thì dạng viết Ba Lan của nó chính là e,
•Nếu e1 và e2 là hai biểu thức có dạng viết Ba Lan tương ứng là d1 và d2 thì dạng viết Ba Lan của e1 + e2 là d1 d2+, của e1 - e2 là d1 d2-, của e1*e2 là d1 d2* ( Giữa d1 và d2 có đúng một dấu cách, trước dấu phép toán không có dấu cách),
•Nếu e là biểu thức có dạng viết Ba Lan là d thì dạng viết Ba Lan của biểu thức có ngoặc đơn (e) chính là d ( không còn dấu ngoặc nữa) . Ví dụ: Biểu thức (c+b*(f- d)) có dạng viết Ba Lan là : c b f d-*+.
Cho file dữ liệu balan.in được tổ chức thành từng dòng, mỗi dòng không dài quá 80 ký tự là biểu diễn của biểu thức nguyên A. Hãy dịch các biểu thức nguyên A thành dạng viết Ba Lan của A ghi vào file balan.out theo từng dòng. Ví dụ: với file balan.in dưới đây sẽ cho ta kết quả như sau:
balan.in balan.out a+b a b+ a-b a b- a*b a b* (a - b) +c a b- c+ (a + b) * c a b+ c* (a + (b-c)) a b c-+ ( a + b*(c-d)) a b c d-*+ ( (a + b) *c- ( d + e) * f) a b+c* d e+f*-