Câu hỏi:

30/09/2024 594

Chuyển biểu thức dạng trung tố sang hậu tố

Yêu cầu: Cho biểu thức 2 * (4 + 3) - 5. Hãy viết chương trình để chuyển một biểu thức dạng trung tố sang biểu thức dạng hậu tố với giả sử toán hạng, toán tử trong chuỗi chỉ gồm 1 kí tự.

Chạy chương trình trên.

Dữ liệu vào: chuỗi biểu thức dạng trung tố.

Dữ liệu ra: chuỗi biểu thức dạng hậu tố.

Sách mới 2k7: Tổng ôn Toán, Lí, Hóa, Văn, Sử, Địa…. kỳ thi tốt nghiệp THPT Quốc gia 2025, đánh giá năng lực (chỉ từ 110k).

Tổng ôn toán Tổng ôn sử Các môn khác

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

Sử dụng hàm isOperator() để kiểm tra kí tự là toán tử, hàm getPriority() để xác định độ ưu tiên của toán tử, hàm inFixtoPostfix() để chuyển biểu thức dạng trung tố sang dạng hậu tố

Hàm kiểm tra kí tự có phải là toán tử hay không:

def isoperator (c):

return c in '+-*/^'

Hàm kiểm tra độ ưu tiên của toán tử:

def getPriority (op):

if op '+' or op ==

return 1

elif op ==

return 2

elif op:

else:

return 3

return 0

or op '/':

chuyển biểu thức dạng trung tổ sang dạng hậu tố:

#Hàm chuyển biểu thức trung tổ sang hậu tổ

def inFixtoPostfix(infix):

infix infix.replace('[', '(').replace('1', ')').replace('(', '(').

Replace (‘}’, ‘)’)

Lace('}', ')')

stack initStack()

postfix = ""

for c in infix:

if c =='':

continue

#Bỏ qua khoảng trắng

#Nếu kí tự là toán hạng, thêm vào chuỗi hậu tố

if c.isalpha() or c.isdigit():

postfix += c

#Nếu kí tự là '(', thêm vào stack

elif (':

push(stack, c)

#Nếu kí tự là ')'

elif c == ')': #Lấy ra khỏi stack và thêm vào postfix cho đến khi gặp ( while not isEmptyStack(stack) and top (stack) != '(':

postfix += pop(stack)

pop(stack)

elif isOperator (c): #Toán tử

if c != '^':

while not isEmptyStack(stack) and getPriority(c) <= getPriority(top(stack)): postfix + pop (stack)

postfix + pop(stack)

push(stack, c)

stack): áng tạo

while not isEmptyStack (stack):

postfix += pop(stack)

return postfix

infix = '2* (4 + 3) - 5'

postfix = inFixtoPostfix (infix)

print("Biểu thức hậu tố: " postfix)

infix = '2^2^3'

postfix = inFixtoPostfix(infix)

print("Biểu thức hậu tố: ", postfix)

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Câu 1:

Nhiệm vụ. Chuyển biểu thức dạng trung tố sang tiền tố.

Yêu cầu: Viết chương trình chuyển một biểu thức dạng trung tố inFix sang dạng tiền tố preFix.

Dữ liệu vào: chuỗi biểu thức dạng trung tố.

Dữ liệu ra: chuỗi biểu thức dạng tiền tố.

Xem đáp án » 30/09/2024 173

Câu 2:

Viết chương trình kiểm tra tính hợp lệ của dấu ngoặc trong chuỗi biểu thức số học. Dữ liệu vào: chuỗi biểu thức số học.

Dữ liệu ra: nếu các dấu ngoặc cân bằng thì thông báo lên màn hình "Chuỗi có dấu ngoặc hợp lệ", ngược lại thông báo "Chuỗi có dấu ngoặc không hợp lệ".

Xem đáp án » 30/09/2024 152

Câu 3:

Em hãy minh hoạ:

a) Kiểm tra tính hợp lệ của dấu ngoặc trong chuỗi [2 * (4 + 3) - 5] bằng cách sử dụng ngăn xếp.

b) Chuyển biểu thức (1 - 4) * 2 + 7 sang dạng hậu tố bằng cách sử dụng ngăn xếp.

Xem đáp án » 29/09/2024 136

Câu 4:

Cho biết cách trình bày cách để kiểm tra số dấu mở ngoặc và số dấu đóng ngoặc tương ứng trong chuỗi "(((){[]}))" có bằng nhau hay không.

Xem đáp án » 29/09/2024 110

Câu 5:

Nhiệm vụ: Viết chương trình tính giá trị của biểu thức số học với biểu thức đầu vào là biểu thức hậu tố.

Yêu cầu: Viết chương trình tính giá trị biểu thức số học dùng hàm chuyển biểu thức inFixtoPostfix(). Chạy chương trình trên.

Xem đáp án » 30/09/2024 89

Bình luận


Bình luận
Đăng ký gói thi VIP

VIP +3 - Luyện thi tất cả các đề có trên Website trong 3 tháng

  • Được thi tất cả các đề của các lớp có trên Khoahoc.vietjack.com
  • Ngân hàng câu hỏi trắc nghiệm theo các mức độ Nhận biết, Thông hiểu, Vận dụng, Vận dụng cao.
  • Luyện chuyên sâu, rèn tốc độ với trọn bộ đề thi thử, đề minh họa, chính thức các năm.
  • Hỏi bài tập với đội ngũ chuyên môn cao của chúng tôi.

Đặt mua

VIP +6 - Luyện thi tất cả các đề có trên Website trong 6 tháng

  • Được thi tất cả các đề của các lớp có trên Khoahoc.vietjack.com
  • Ngân hàng câu hỏi trắc nghiệm theo các mức độ Nhận biết, Thông hiểu, Vận dụng, Vận dụng cao.
  • Luyện chuyên sâu, rèn tốc độ với trọn bộ đề thi thử, đề minh họa, chính thức các năm.
  • Hỏi bài tập với đội ngũ chuyên môn cao của chúng tôi.

Đặt mua

VIP +12 - Luyện thi tất cả các đề có trên Website trong 12 tháng

  • Siêu tiết kiệm - Được thi tất cả các đề của các lớp có trên Khoahoc.vietjack.com
  • Ngân hàng câu hỏi trắc nghiệm theo các mức độ Nhận biết, Thông hiểu, Vận dụng, Vận dụng cao.
  • Luyện chuyên sâu, rèn tốc độ với trọn bộ đề thi thử, đề minh họa, chính thức các năm.
  • Hỏi bài tập với đội ngũ chuyên môn cao của chúng tôi.

Đặt mua

Vietjack official store