Câu hỏi:

30/09/2024 205

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ệ".

Sale Tết giảm 50% 2k7: Bộ 20 đề minh họa Toán, Lí, Hóa, Văn, Sử, Địa…. form chuẩn 2025 của Bộ giáo dục (chỉ từ 49k/cuốn).

20 đề Toán 20 đề Văn Các môn khác

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

#Mã giả kiểm tra dấu ngoặc hợp lệ trong chuỗi biểu thức

checkParentheses (s)

openParentheses = ["[","{","("] closeParentheses = ["]","}",")"] khởi tạo ngăn xếp stack rỗng for c in s:

if c là là dấu mở ngoặc:

Thêm c vào stack

elif c là dấu đóng ngoặc:

if stack rỗng:

return False

#Danh sách các ngoặc mở

#Danh sách các ngoặc đóng

else:

pos = vị trí của c trong closeParentheses

c1 là dấu mở ngoặc ở vị trí pos (tương ứng với c) c2 là dấu mở ngoặc lấy ra từ stack

if c1 khác c2:

return False

if stack rỗng:

return True

else:

return False

* Hàm kiểm tra dấu ngoặc hợp lệ trong chuỗi:

#Hàm kiểm tra dấu ngoặc hợp lệ trong chuỗi biểu thức

def checkParentheses(s):

openParentheses = ["[","",""] closeParentheses = ["]","}",")"] stack initStack() for c in s:

if c in openParentheses: push(stack, c)

elif c in closeParentheses:

if isEmptyStack(stack):

return False

else:

#Danh sách các kí tự ngoặc mở #Danh sách các kí tự ngoặc đồng #Khởi tạo ngăn xếp rỗng #Duyệt mọi kí tự trong s

#Kiểm tra nếu c là dấu mở ngoặc

#Thêm c vào stack

#Ngược lại, nếu c là dấu đóng ngoặc

pos = closeParentheses.index(c) #Lấy vị trí của kí tự ngoặc đóng

c1 = openParentheses[pos]

c2 = pop(stack)

if c1 = c2:

return False

if isEmptyStack(stack):

return True

else:

return False

#Nếu stack rỗng, dấu ngoặc hợp lệ

#Ngược lại, chuỗi có dấu ngoặc không hợp lệ

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

Câu 1:

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ố.

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

Câu 2:

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 251

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 163

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 131

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 107

Bình luận


Bình luận