Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int MAXSIZE = 100;
- struct Stack
- {
- char data[MAXSIZE];
- int size;
- };
- bool PUSH(Stack &s, char x)
- {
- if (s.size == MAXSIZE)
- return 0;
- s.data[s.size] = x;
- s.size++;
- return 1;
- }
- char POP(Stack &s)
- {
- if (s.size == 0) return char(255);
- s.size--;
- return s.data[s.size];
- }
- bool ISEMPTY(Stack& s)
- {
- if (s.size == 0)
- return 1;
- else return 0;
- }
- void main()
- {
- setlocale(LC_ALL,"Russian");
- char br1[3] = { '(', '[','{' };
- char br2[3] = { ')',']','}' };
- char str[80], upper;
- int error=0;
- Stack S;
- S.size = 0;
- cout << "Введите выражение со скобками > " << endl;
- cin >> str;
- for (int i = 0; i < strlen(str); i++)
- {
- for (int k = 0; k < 3; k++)
- {
- if (str[i] == br1[k])
- {
- PUSH(S, str[i]);
- break;
- }
- if (str[i] == br2[k])
- {
- upper = POP(S);
- if (upper != br1[k]) error = 1;
- break;
- }
- }
- if (error) break;
- }
- if (!error && (S.size == 0))
- cout << "Выражение правильное";
- else
- cout << "Выражение неправильное";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement