С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 21.05.2021
Сообщений: 2
1

Правильность расстановки скобок

21.05.2021, 22:36. Показов 1603. Ответов 3

Author24 — интернет-сервис помощи студентам
В строке могут присутствовать скобки как круглые, так и квадратные
скобки. Каждой открывающей скобке соответствует закрывающая того же
типа (круглой – круглая, квадратной- квадратная). Напишите
рекурсивную функцию, проверяющую правильность расстановки скобок в
этом случае. Пример неправильной расстановки: ( [ ) ].

я не понимаю помогите...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2021, 22:36
Ответы с готовыми решениями:

Правильность расстановки скобок
Всё обыскал но никак не могу найти именно то, что мне нужно, а именно: Со всем в принципе...

Проверить правильность расстановки скобок
Помогите написать программу на c++. Дана строка, содержащая латинские буквы и скобки трех видов:...

Проверить правильность расстановки скобок в файле
Всем привет. У меня есть часть программы, которая выводит содержимое файла. Как мне проверить...

В символьной строке проверить правильность расстановки скобок
Есть строка, нужно проверить её на правильное раставление скобок. Как это организовать правильно?

3
429 / 312 / 129
Регистрация: 09.02.2021
Сообщений: 1,096
Записей в блоге: 1
21.05.2021, 23:15 2
Лучший ответ Сообщение было отмечено elobuh как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool checker(const char * s, int counter = 0)
{
    if (counter < 0) return false;
 
    for(;*s;++s)
        switch(*s)
        {
            case '(': return checker(s+1,counter+1);
            case ')': return checker(s+1,counter-1);
        }
    return (counter == 0);
}
 
int main(int argc, const char * argv[])
{
    cout << checker("(())") << endl;
    cout << checker(")(") << endl;
    cout << checker("())(") << endl;
    cout << checker("(())(") << endl;
}


Добавлено через 59 секунд
В инете куча примеров,можете переделать для себя
1
0 / 0 / 0
Регистрация: 21.05.2021
Сообщений: 2
21.05.2021, 23:26  [ТС] 3
Если кейсы для квадратных скобок написать по аналогии(насколько я понял, так и надо сделать) с круглыми, то пример из условия определяется как верное написание.
upd: исправил
0
188 / 89 / 35
Регистрация: 26.04.2021
Сообщений: 346
22.05.2021, 00:28 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <cstring>
#include <iostream>
 
bool check(const char expr[], size_t len) {
    char c = *expr;
 
    if (!len) {
        return true;
    }
 
    if (len == 1 || c == ')' || c == ']') {
        return false;
    }
 
    size_t i = 1;
    for (size_t count = 0; i < len; i++) {
        if (expr[i] == c) {
            count++;
        }
        if (expr[i] == (c == '(' ? ')' : c == '[' ? ']' : -1)) {
            if (!count) {
                break;
            }
            count--;
        }
    }
 
    if (i == len) {
        return false;
    }
 
    if (i == 1) {
        return check(expr + 2, len - 2);
    }
 
    return check(expr + 1, i - 1) && check(expr + i + 1, len - i - 1);
}
 
 
int main() {
    const char *exprs[] = {
        "[]",
        "((((()))]]",
        "([[()]])[(([()]))][][()]",
        "[(])"
    };
 
    for (const char *expr : exprs) {
        std::cout << expr << ": " << (check(expr, std::strlen(expr)) ? "Ok" : "Fail") << std::endl;
    }
 
    return 0;
}
0
22.05.2021, 00:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2021, 00:28
Помогаю со студенческими работами здесь

Работа со стеком (проверить правильность расстановки скобок)
Дано математическое выражение, к примеру ((a+b)*b(s)() Необходимо проверить,правильно ли...

Проверить правильность расстановки в тексте круглых скобок
Задача: Проверить правильность расстановки в тексте круглых скобок. #include &lt;iostream&gt;...

Работа со стеком (проверить правильность расстановки скобок)
Дано математическое выражение, к примеру {x+(g-*c)-(q+w)}. Необходимо проверить,правильно ли...

Проверить правильность расстановки и вложенности скобок в тексте (абстрактный стек)
реализовать с помощью связного списка...

Проверить в тексте файла правильность расстановки открывающих и закрывающих скобок
Помогите, пожалуйста написать программу C++ Дан текстовый файл INPUT.TXT. Проверить в тексте файла...

Проверить правильность расстановки в тексте круглых скобок (конечный автомат)
Только начала изучать С++.Необходимо проверить правильность расстановки в тексте круглых скобок....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru