Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
heyhey
Сообщений: n/a
#1

Определить соответствие разных видов скобок в строке - C++

21.11.2010, 15:54. Просмотров 626. Ответов 1
Метки нет (Все метки)

проверить текстовый файл(содержащий текст) на предмет соответствия разных видов скобок, т.е при выборе одной из скобок должна указываться парная ей скобка...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2010, 15:54     Определить соответствие разных видов скобок в строке
Посмотрите здесь:

Подсчитайте количество скобок всех видов в строке - C++
Здравствуйте уважаемые любители и ценители языка С++! У меня к вам огромная просьба. На днях нужно сдать контрольную работу по предмету...

Правильность размещения трех видов скобок - C++
Помогите пожалуйста, я первый курс и на завтра нужно сдать. Составьте программу, определяющую правильность размещения трех видов...

Строка: Определить одинаковое ли количество скобок, которые открываются и закрываются, в данной строке. - C++
Помогите написать программу! Пожалуйста очень срочно! Вот задание: Дано массив символов. Определить одинаковое ли количество скобок,...

Ввести строку символов, если ее длина кратна 5, посчитать количество скобок всех видов. Решить в VC++. - C++
Ввести строку символов, если ее длина кратна 5, посчитать количество скобок всех видов. Решить задачу в VC++.

Проверить программу на соответствие числа открывающихся и закрывающихся круглых и фигурных скобок - C++
Дан текстовый файл, содержащий программу на языке С++. Проверить эту программу на соответствие числа открывающихся и закрывающихся круглых...

Проверка записи на соответствие условию: правильная скобочная запись из круглых и квадратных скобок - C++
Здравствуйте! Задача: проверка записи на соответствие условию: правильная скобочная запись из круглых и квадратных скобок, внутри...

Проверить, одинаково ли число открывающихся и закрывающихся скобок в данной строке. Определить длину строки, результат вывести на экран. - C++
Помогите решить данные задачи пожалуйста, завтра надо сдавать, заранее спасибо. 1.Проверить, одинаково ли число открывающихся и...

Регулярные выражения, Поиск всех видов чисел в строке, CString - C++
Здравствуйте Уважаемые Дамы и Господа. Уже какой вечер мучаюсь, пытаюсь понять как решить поставленную задачу. Имеется строчка: ...

Разработка класса для реализации различных видов сортировки символов в строке - C++
Здравствуйте. Нужна помощь по реализации проекта по ООП. Может кто-то уже сталкивался с подобными задачами и может поделится своими...

Преобразование введенных во входной строке латинских букв в русские в соответствие с правилами транслитерации - C++
Нужно использовать вставку из ассемблера. Не знаю как сравнить элементы из pointer с русским алфавитом, заменить их элементами по правилам...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
22.11.2010, 22:29     Определить соответствие разных видов скобок в строке #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//////////////////////////////////////////////////////////////////////////////////////
//проверить текстовый файл(содержащий текст) на предмет соответствия 
//разных видов скобок, т.е при выборе одной из скобок должна указываться 
//парная ей скобка...
//////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <stack>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string       T_str;
typedef char              T_bracket;
typedef std::stack<char>  T_brackets_stack;
//////////////////////////////////////////////////////////////////////////////////////
const T_str  OPEN_BRACKETS("([{");
const T_str  CLOSE_BRACKETS(")]}");
const T_str  BRACKETS(OPEN_BRACKETS + CLOSE_BRACKETS);
//////////////////////////////////////////////////////////////////////////////////////
bool  is_open_bracket(T_bracket  bracket)
{
    return  OPEN_BRACKETS.find(bracket) != T_str::npos;
}
//////////////////////////////////////////////////////////////////////////////////////
T_bracket  open_bracket_from(T_bracket  close_bracket)
{
    T_str::size_type  pos = CLOSE_BRACKETS.find(close_bracket);
    if(pos == T_str::npos) return 0;
    return OPEN_BRACKETS[pos];
}
//////////////////////////////////////////////////////////////////////////////////////
bool  brackets_are_correct(const T_str  s)
{    
    T_brackets_stack  brackets_stack;
    
    T_str::size_type  pos = 0;
 
    for(;;)
    {
        pos = s.find_first_of(BRACKETS, pos);
        if(pos == T_str::npos) break;
        char  bracket_cur = s[pos++];
 
        if(is_open_bracket(bracket_cur))
        {
            brackets_stack.push(bracket_cur);
        }
        else
        {
            if(brackets_stack.empty()
               || brackets_stack.top() != open_bracket_from(bracket_cur))
            {
                return false;
            }
            brackets_stack.pop();
        }       
    }   
    return  brackets_stack.empty();
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите строку текста со скобками разных видов:"
              << std::endl
              << "-> ";
 
    T_str s;
    std::getline(std::cin, s);
    std::cout << "Скобки "
              << (brackets_are_correct(s) ? "" : "НЕ")
              << " корректны."
              << std::endl;
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru