DZ4

Форк
0
/
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>
18
using namespace std;
19
bool checkBrackets(string str) {
20
    stack<char> brackets;
21
    for (char& c : str) {
22
        if (c == '(' || c == '{' || c == '[') {
23
            brackets.push(c);
24
        }
25
        else if (c == ')' || c == '}' || c == ']') {
26
            if (brackets.empty()) {
27
                return false;
28
            }
29
            char top = brackets.top();
30
            if ((c == ')' && top == '(') || (c == '}' && top == '{') || (c == ']' && top == '[')) {
31
                brackets.pop();
32
            }
33
            else {
34
                return false;
35
            }
36
        }
37
    }
38
    return brackets.empty();
39
}
40

41
int main() {
42
    setlocale(LC_ALL, "RU");
43
    string str;
44
    cin >> str;
45

46
    if (checkBrackets(str)) {
47
        cout << "Строка корректна" << endl;
48
    }
49
    else {
50
        cout << "Ошибка в расстановке скобок" << endl;
51
    }
52

53
    return 0;
54
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.