bool ParenthesisMatched(char *expr) { Stack<int> s(MaxLength); int j, length = strlen(expr); for (int i = 1; i <= length; i++) { if (expr[i - 1] == '(') s.Add(i); else if (expr[i - 1] == ')') { try { s.Delete(j); cout << j << ' ' << i << endl; } catch (OutOfBounds) { cout << "No match for right parenthesis" << " at " << i << endl; return false; } } } bool bEmpty = true; while (!s.IsEmpty()) { bEmpty = false; s.Delete(j); cout << "No match for left parenthesis at " << j << endl; } if( !bEmpty ) return false; return true; }