Advertisement
hurmawe

lab3 alg

Nov 18th, 2022
543
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int MAXSIZE = 100;
  6. struct Stack
  7. {
  8.     char data[MAXSIZE];
  9.     int size;
  10. };
  11.  
  12. bool PUSH(Stack &s, char x)
  13. {
  14.     if (s.size == MAXSIZE)
  15.         return 0;
  16.     s.data[s.size] = x;
  17.     s.size++;
  18.     return 1;
  19. }
  20. char POP(Stack &s)
  21. {
  22.     if (s.size == 0) return char(255);
  23.     s.size--;
  24.     return s.data[s.size];
  25. }
  26.  
  27. bool ISEMPTY(Stack& s)
  28. {
  29.     if (s.size == 0)
  30.         return 1;
  31.     else return 0;
  32. }
  33. void main()
  34. {
  35.     setlocale(LC_ALL,"Russian");
  36.     char br1[3] = { '(', '[','{' };
  37.     char br2[3] = { ')',']','}' };
  38.     char str[80], upper;
  39.     int  error=0;
  40.     Stack S;
  41.     S.size = 0;
  42.     cout << "Введите выражение со скобками > " << endl;
  43.     cin >> str;
  44.  
  45.     for (int i = 0; i < strlen(str); i++)
  46.     {
  47.         for (int k = 0; k < 3; k++)
  48.         {
  49.             if (str[i] == br1[k])
  50.             {
  51.                 PUSH(S, str[i]);
  52.                 break;
  53.             }
  54.             if (str[i] == br2[k])
  55.             {
  56.                 upper = POP(S);
  57.                 if (upper != br1[k]) error = 1;
  58.                 break;
  59.             }
  60.         }
  61.         if (error) break;
  62.     }
  63.  
  64.     if (!error && (S.size == 0))
  65.         cout << "Выражение правильное";
  66.     else
  67.         cout << "Выражение неправильное";
  68.  
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement