DZ4
/
project3.cpp
54 строки · 2.3 Кб
1//Есть строка символов, признаком конца, которой является . В строке могут быть фигурные, круглые, квадратные скобки. Скобки могут быть открывающими и закрывающими.
2//Необходимо проверить корректность расстановки скобок.
3//При этом необходимо, чтобы выполнились следующие
4//правила:
5//1. Каждая открывающая скобка должна иметь справа
6//такую же закрывающую. Обратное также должно быть
7//верно.
8//2. Открывающие и закрывающие пары скобок разных
9//типов должны быть правильно расположены по отношению друг к другу.
10//■ Пример правильной строки: ({x-y-z}*[x+2y]-(z+4x));
11//■ Пример неправильной строки:([x-y-z}*[x+2y)-{z+4x)].
12////Если все правила соблюдены выведите информационное
13//сообщение о корректности строки, иначе покажите строку
14//до места возникновения первой ошибки.
15#include <iostream>16#include <stack>17#include <string>18using namespace std;19bool checkBrackets(string str) {20stack<char> brackets;21for (char& c : str) {22if (c == '(' || c == '{' || c == '[') {23brackets.push(c);24}25else if (c == ')' || c == '}' || c == ']') {26if (brackets.empty()) {27return false;28}29char top = brackets.top();30if ((c == ')' && top == '(') || (c == '}' && top == '{') || (c == ']' && top == '[')) {31brackets.pop();32}33else {34return false;35}36}37}38return brackets.empty();39}
40
41int main() {42setlocale(LC_ALL, "RU");43string str;44cin >> str;45
46if (checkBrackets(str)) {47cout << "Строка корректна" << endl;48}49else {50cout << "Ошибка в расстановке скобок" << endl;51}52
53return 0;54}