Em hãy minh hoạ: Kiểm tra tính hợp lệ của dấu ngoặc trong chuỗi [2 * (4 + 3) - 5]

Giải Chuyên đề Tin 12 Bài 1.4: Ứng dụng của ngăn xếp - Chân trời sáng tạo

Câu hỏi trang 22 Chuyên đề Tin học 12: 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.

Quảng cáo

Lời giả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

Quảng cáo

Lời giải bài tập Chuyên đề Tin 12 Bài 1.3: Ứng dụng của hàng đợi hay, chi tiết khác:

Quảng cáo

Xem thêm lời giải bài tập Chuyên đề học tập Tin học 12 Chân trời sáng tạo hay, chi tiết khác:

Xem thêm các tài liệu học tốt lớp 12 hay khác:

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Nếu thấy hay, hãy động viên và chia sẻ nhé! Các bình luận không phù hợp với nội quy bình luận trang web sẽ bị cấm bình luận vĩnh viễn.


Giải bài tập lớp 12 sách mới các môn học