Câu hỏi:
29/09/2024 162Em 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.
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).
Quảng cáo
Trả lời:
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.
Code như sau:
stack = []
for char in bieu_thuc:
if char == '(':
stack.append(char)
elif char == ')':
if not stack or stack[-1] != '(':
return False
stack.pop()
return len(stack) == 0
bieu_thuc_x = "[2 * (4 + 3) - 5]"
if kiem_tra_hop_le_ngoac(bieu_thuc_x):
print(f"Biểu thức {bieu_thuc_x} có dấu ngoặc hợp lệ.")
else:
print(f"Biểu thức {bieu_thuc_x} có dấu ngoặc không hợp lệ.")
Kết quả: Biểu thức [2 * (4 + 3) - 5] có dấu ngoặc hợp lệ.
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.
Code như sau:
precedence = {'+': 1, '-': 1, '*': 2, '/': 2}
stack = []
output = []
for char in bieu_thuc:
if char.isdigit():
output.append(char)
elif char in precedence:
while (stack and stack[-1] != '(' and
precedence[char] <= precedence.get(stack[-1], 0)):
output.append(stack.pop())
stack.append(char)
elif char == '(':
stack.append(char)
elif char == ')':
while stack and stack[-1] != '(':
output.append(stack.pop())
stack.pop()
while stack:
output.append(stack.pop())
return ' '.join(output)
bieu_thuc_b = "(1 - 4) * 2 + 7"
bieu_thuc_hau_to = chuyen_sang_hau_to(bieu_thuc_y)
print(f"Biểu thức {bieu_thuc_b} sau khi chuyển sang dạng hậu tố là: {bieu_thuc_hau_to}")
Kết quả của đoạn mã trên sẽ là:
Biểu thức (1 - 4) * 2 + 7 sau khi chuyển sang dạng hậu tố là: 1 4 - 2 * 7 +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ố.
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ố.
Câu 3:
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ệ".
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.
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.
Đề thi học kì 1 Tin học 12 Kết nối tri thức có đáp án- Đề 1
263 câu Trắc nghiệm tổng hợp ôn thi tốt nghiệp THPT môn Tin học Chủ đề F. Giải quyết vấn đề với sự trợ giúp của máy tính có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 7 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 8 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 10 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 9 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 11 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 14 có đáp án
về câu hỏi!