Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from array import *
- class StackChar:
- # Constructor
- def __init__(self):
- self.maxSize = 50
- array1 = array('u', 'x' * self.maxSize)
- self.stack = array1
- self.top = 0
- # Adds element to the Stack
- def push(self, data):
- if self.top >= self.maxSize:
- return "Stack Full!"
- self.stack[self.top] = data
- self.top += 1
- return True
- # Removes element from the stack
- def pop(self):
- if self.top <= 0:
- return "Stack Empty!"
- item = self.stack[self.top-1]
- self.top -= 1
- return item
- # Returns the peek element of the stack
- def peek(self):
- if self.top <= 0:
- return "Stack Empty!"
- item = self.stack[self.top-1]
- return item
- # Size of the stack
- def size(self):
- return self.top
- class StackInt:
- # Constructor
- def __init__(self):
- self.maxSize = 50
- array1 = array('i', [0] * self.maxSize)
- self.stack = array1
- self.top = 0
- # Adds element to the Stack
- def push(self, data):
- if self.top >= self.maxSize:
- return "Stack Full!"
- self.stack[self.top] = data
- self.top += 1
- return True
- # Removes element from the stack
- def pop(self):
- if self.top <= 0:
- return "Stack Empty!"
- item = self.stack[self.top - 1]
- self.top -= 1
- return item
- # Return the peek element of the stack
- def peek(self):
- if self.top <= 0:
- return "Stack Empty!"
- item = self.stack[self.top - 1]
- return item
- # Size of the stack
- def size(self):
- return self.top
- class CheckBalancedBracket:
- def is_balanced(self, expression):
- print(expression)
- stack = StackChar()
- indexes = StackInt()
- dict = {')': '(', '}': '{', ']': '['}
- index = 0
- for c in expression:
- index += 1
- if c == ')' or c == '}' or c == ']':
- if dict[c] != stack.peek():
- print("This expression is NOT correct.")
- if indexes.peek() != "Stack Empty!":
- print(f"Error at character #{indexes.peek()}. '{stack.peek()}' - not closed.")
- else:
- print(f"Error at character #{index}. '{c}' - not opened.")
- return
- else:
- stack.pop()
- indexes.pop()
- elif c == '(' or c == '[' or c == '{':
- stack.push(c)
- indexes.push(index)
- if stack.size() == 0:
- print("This expression is correct.")
- return
- else:
- while stack.size() > 1:
- stack.pop()
- indexes.pop()
- print("This expression is NOT correct.")
- print(f"Error at character #{indexes.peek()}. '{stack.peek()}' - not closed.")
- return
- arithmaticExpression = input("Enter the expression: ")
- ans = CheckBalancedBracket()
- ans.is_balanced(arithmaticExpression)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement