Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- #include <string>
- using namespace std;
- class stek {
- private:
- int sizep;
- int size;
- char *p; //simbols
- public:
- stek() {
- size = 0;
- sizep = 0;
- }
- void push_back(char a) {
- size++;
- if (size >= sizep) {
- sizep = (sizep + 1) * 2;
- char *newarray = new char[sizep]; //create mew massive with increased size
- for (int i = 0; i < size - 1; i++) {
- newarray[i] = p[i];
- }
- newarray[size - 1] = a;
- delete[] p;
- p = newarray;
- }
- else {
- p[size - 1] = a;
- }
- }
- void pop_back(char c, int *o) { //simbol of ([]), *o right or wrong
- if (size - 1 >= 0 && (p[size - 1] == '(' and c == ')' or p[size - 1] == '[' and c == ']'))
- {
- size--; //delete element
- }
- else *o = 0;
- }
- void del()
- {
- delete[] p; //delete massive
- p = nullptr; // присвоили указателю на массив "ничего"
- size = 0; // аналогично
- sizep = 0;
- }
- ~stek() {
- delete[] p;
- }
- };
- int main() {
- //ifstream СЃin("stack.in");
- stek a;
- string s;
- //ofstream СЃout("stack.out");
- while (cin >> s)
- {
- int o = 1;
- for (int i = 0; i < s.size(); i++)
- {
- if ('[' == s[i] or '(' == s[i])
- {
- a.push_back(s[i]);
- }
- if (')' == s[i] or ']' == s[i])
- {
- a.pop_back(s[i], &o);
- if (o == 0)
- {
- cout << "NO";
- break;
- }
- }
- }
- if (o == 1)
- {
- cout << "YES";
- }
- a.del(); //делаем это для занесения другой строки. очистка памяти
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement