Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2184421
А
Аноним
11 ноября 2024 14:32 · публичный вопрос
А
Аноним

Напишите программу, которая проверяет правильность скобочного выражения с четырьмя видами скобок: (), [], {} и <>. Все операции со стеком вынесите в отдельный модуль.

Ответ нейросети
11 ноября 2024 14:32

Конечно! Давайте создадим программу на Python, которая будет проверять правильность скобочного выражения с четырьмя типами скобок: круглые (), квадратные [], фигурные {} и угловые <>. Мы вынесем все операции со стеком в отдельный модуль.

Вот пример реализации:

Модуль для работы со стеком (stack.py)

class Stack:
    def __init__(self):
        self.items = []

    def is_empty(self):
        return len(self.items) == 0

    def push(self, item):
        self.items.append(item)

    def pop(self):
        if not self.is_empty():
            return self.items.pop()
        raise IndexError("pop from empty stack")

    def peek(self):
        if not self.is_empty():
            return self.items[-1]
        raise IndexError("peek from empty stack")

    def size(self):
        return len(self.items)

Главная программа (main.py)

from stack import Stack

def is_balanced(expression):
    stack = Stack()
    opening_brackets = "([{<"
    matching_brackets = {')': '(', ']': '[', '}': '{', '>': '<'}

    for char in expression:
        if char in opening_brackets:
            stack.push(char)
        elif char in matching_brackets:
            if stack.is_empty() or stack.pop() != matching_brackets[char]:
                return False

    return stack.is_empty()

if __name__ == "__main__":
    expression = input("Введите скобочное выражение: ")
    if is_balanced(expression):
        print("Скобочное выражение правильно.")
    else:
        print("Скобочное выражение неправильно.")

Как работает программа:

  1. Стек: Мы создаем класс Stack, который будет хранить элементы. В этом классе есть методы для добавления (push), удаления (pop), проверки, пуст ли стек (is_empty) и получения размера стека (size).

  2. Проверка выражения: В функции is_balanced мы перебираем каждый символ во входной строке. Если символ – это открывающая скобка, он добавляется в стек. Если скобка закрывающая, мы проверяем, соответствует ли она последней открывающей скобке, удаляя последнюю открывающую при помощи pop.

  3. Итог: После проверки мы определяем, правильно ли расставлены скобки, проверяя, остались ли незакрытые скобки в стеке.

Теперь вы можете протестировать программу с разными выражениями! Если у вас есть дополнительные вопросы или вам нужна помощь с модификацией программы, не стесняйтесь обращаться.