#include <iostream>
#include <stack>
#include <string>

using namespace std;

/*
   Program ten wykorzystuje stos do sprawdzenia, czy wyrażenie ma zamknięte
   nawiasy.
*/
int main()
{
   string expression;
   cout << "Wprowadź wyrażenie ze znakami { [ ( ) ] }: ";
   getline(cin, expression);
   stack<string> parens;

   for (int i = 0; i < expression.length(); i++)
   {
      string ch = expression.substr(i, 1);
      if (ch == "(" || ch == "[" || ch == "{")
      {
         parens.push(ch);
      }
      else if (ch == ")" || ch == "]" || ch == "}")
      {
         if (parens.size() == 0)
         {
            cout << "Niezamknięte." << endl;
            return 0;
         }
         string open = parens.top();
         if ((open == "(" && ch == ")"
               || open == "[" && ch == "]"
               || open == "{" && ch == "}"))
         {
            parens.pop();
         }
         else
         {
            cout << "Niezamknięte." << endl;
            return 0;
         }         
      }
   }
   if (parens.size() == 0) 
   { 
      cout << "Zamknięte." << endl;
   }
   else
   { 
      cout << "Niezamknięte." << endl;
   }
   return 0;
}

