Стек
====

Балансирани скоби
-----------------
В аритметичните изрази използваме скоби, за да укажем в какъв ред да бъдат
извършвани операциите. Например, в аритметичния израз
`(5 + 6) ∗ (7 + 8) / (4 + 3)` скобите около операцията събиране указват да
бъде извършено първо събирането, а след това умнжоението и делението. Ако в
израза нямаше скоби, с по-голям приоритет са операциите умножение и
деление.

Друг пример за използване на скоби е синтаксисът на езика Lisp:
```lisp
(defun square (x)
  (* x x))
```

И в двата примера скобите са балансирани. Това означава, че на всяка отваряща
скоба съответства затваряща и скобите са правилно вложени.

Примери за изрази, в които скобите са балансирани:
```
(()()()())
(((())))
(()((())()))
```

Примери за изрази, в които скобите на са балансирани:
```
((((((())
()))
(()()(()
)(
())(
```

Вашата задача е да напишете функция
`bool validate_parentheses(const char* expression)`,
която по даден израз `expression` проверява дали
скобите в `expression` са балансирани.

[Решение](validate-parentheses-counter.cpp)

Някои аритметични изрази съдържат различни видове скоби. Например:
`{[5 * (42 + 6) - 10] / 2}`

Напишете програма, която проверява дали скобите в даден израз са балансирани,
като изразът може да съдържа следните видове скоби: `[]`, `{}`, `<>`.

[Решение](parentheses-validator)

Add description for balanced parentheses problem
Add description for balanced parentheses problem
