Advertisement
Beyrin

Brackets check

Jun 1st, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int st(char str[])
  5.     {
  6.         int j, k = 0;
  7.         char* st = (char*)malloc(sizeof(char)*strlen(str));
  8.         for (j = 0; j!= strlen(str); j++)
  9.         {
  10.             switch (str[j])
  11.             {
  12.                 case '(':
  13.                     st[k] = '(';
  14.                     k++;
  15.                     break;
  16.                 case '{':
  17.                     st[k] = '{';
  18.                     k++;
  19.                     break;
  20.                 case '[':
  21.                     st[k] = '[';
  22.                     k++;
  23.                     break;
  24.                 case ')':
  25.                     if( (st[k-1] == '(') )
  26.                         k--;
  27.                     else
  28.                     {
  29.                         free(st);
  30.                         return 0;
  31.                     }
  32.                     break;
  33.                 case '}':
  34.                     if( (st[k-1] == '{') )
  35.                     k--;
  36.                     else
  37.                     {
  38.                         free(st);
  39.                         return 0;
  40.                     }
  41.                     break;
  42.                 case ']':
  43.                     if( (st[k-1] == '[') )
  44.                     k--;
  45.                     else
  46.                     {
  47.                         free(st);
  48.                         return 0;
  49.                     }
  50.                     break;
  51.             }
  52.         }
  53.         if (k== 0)
  54.             return 1;
  55.         else
  56.             {
  57.                 free(st);
  58.                 return 0;
  59.             }
  60.     }
  61.  
  62.  
  63.  
  64. int main()
  65. {
  66.     int i, j, z, brackets = 0;
  67.     char c, *str = "", *tmp = NULL;
  68.  
  69.     for (i=0; (c = getchar())!= '\n'; i++)
  70.     {
  71.         tmp = str;
  72.         str = (char*)malloc(i+2);
  73.         strcpy(str, tmp);
  74.         free(tmp);
  75.         str[i] = c;
  76.         str[i+1]= '\0';
  77.     }
  78.     for (i = 0; i< strlen(str); i++)
  79.     if ((str[i] == '(') || (str[i] == '{') || (str[i] == '[') || (str[i] == ')') || (str[i] == '}') || (str[i] == ']'))
  80.         brackets++;
  81.     if (brackets == 0)
  82.     {
  83.         printf("There are no brackets\n");
  84.         return 0;
  85.     }
  86.     if (st(str) == 1)
  87.         printf("Everythig is OK\n");
  88.     else
  89.         printf("Smt is wrong\n");
  90.     free(str);
  91.     return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement