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

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

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

C++ Подсчитайте количество скобок всех видов в строке
Ввести строку символов, если ее длина кратна 5, посчитать количество скобок всех видов. Решить в VC++. C++
C++ Проверить, одинаково ли число открывающихся и закрывающихся скобок в данной строке. Определить длину строки, результат вывести на экран.
C++ Проверить программу на соответствие числа открывающихся и закрывающихся круглых и фигурных скобок
Проверка записи на соответствие условию: правильная скобочная запись из круглых и квадратных скобок C++
Регулярные выражения, Поиск всех видов чисел в строке, CString C++
Строка: Определить одинаковое ли количество скобок, которые открываются и закрываются, в данной строке. C++
Преобразование введенных во входной строке латинских букв в русские в соответствие с правилами транслитерации C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,691
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;
}
Yandex
Объявления
22.11.2010, 22:29     Определить соответствие разных видов скобок в строке
Ответ Создать тему
Опции темы

Текущее время: 18:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru