Advertisement
bogdan_obukhovskii

Untitled

Mar 30th, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #include <string>
  2. #include <iostream>
  3. #include <stack>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7.  
  8. bool isBracketsClosed(string inputString)
  9. {
  10.     stack <char> stk; //сам стек
  11.  
  12.     char currentTop; //текущий верхний элемент стека
  13.  
  14.     for (int i = 0; i < inputString.length(); i++)
  15.     {
  16.         if (inputString[i] == '(' || inputString[i] == '{') //если скобка открывающая пихаем её в стек
  17.         {
  18.             stk.push(inputString[i]);
  19.             continue;
  20.         }
  21.  
  22.         if (stk.empty()) //если стек пуст, то первый элемент не открывающая скобка
  23.         {
  24.             return false;
  25.         }
  26.  
  27.         currentTop = stk.top();
  28.         switch (inputString[i])
  29.         {
  30.             case ')':
  31.                 stk.pop();
  32.                 if (currentTop == '{')
  33.                 {
  34.                     return false;
  35.                 }
  36.                 break;
  37.  
  38.             case '}':
  39.                 stk.pop();
  40.                 if (currentTop == '(')
  41.                 {
  42.                     return false;
  43.                 }
  44.                 break;
  45.         }
  46.     }
  47.  
  48.     //<stack>.empty() возвращает true если стек пуст и false если нет
  49.     return stk.empty();
  50. }
  51.  
  52. /*
  53.     ЭТУ ФУНКЦИЮ Я НАПИШУ ЗАВТРА КАЖДОМУ ОТДЕЛЬНО
  54. */
  55. //составляет строку скобок из файла
  56. //обрезает все переносы строк, все символы и цифры
  57. string makeStringBracketsFromFile(ifstream& file);
  58.  
  59. int main()
  60. {
  61.     setlocale(0, "rus");
  62.  
  63.     ifstream file("Text.txt"); //код в файле, который нужно проанализировать
  64.  
  65.     string brackets; //строка скобок
  66.     brackets = makeStringBracketsFromFile(file); //составляем строку из файла
  67.  
  68.     file.close(); //закрываем файл
  69.  
  70.     //правильно ли у нас вложены скобки
  71.     if (isBracketsClosed(brackets))
  72.     {
  73.         cout << "Все скобки на месте!";
  74.     }
  75.     else
  76.     {
  77.         cout << "Не все скобки на месте!";
  78.     }
  79.     cout << endl;
  80.  
  81.     system("pause");
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement