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

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

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

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

21.11.2010, 15:54. Просмотров 602. Ответов 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++ В символьной строке проверить правильность расстановки скобок
Строка: Определить одинаковое ли количество скобок, которые открываются и закрываются, в данной строке. C++
Преобразование введенных во входной строке латинских букв в русские в соответствие с правилами транслитерации C++
Разработка класса для реализации различных видов сортировки символов в строке C++
C++ Правильность размещения трех видов скобок

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

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

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