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

Для каждой открывающей скобки найти позицию ей соответствующей закрывающей скобки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Корректно ли использовать goto? http://www.cyberforum.ru/cpp-beginners/thread1242177.html
Читал что оператор goto вообще советуют не использовать, кроме разве что глубоких циклов. Но нормально ли это будет, например, вот в таком коде: int main() { char choice; cin >> choice; while (cin.get() != '\n') { cin.ignore(100, '\n'); bad:cout << "Bad choice. Try again.\n"; cin >> choice;
C++ Найти медианы на всех префиксах последовательности X длины n и вывести их сумму В этой задаче необходимо найти медианы на всех префиксах последовательности X длины n и вывести их сумму. Медианой последовательности из нечетного (k = 2 ⋅ l + 1) количества элементов будем называть элемент, который стоял бы на (l + 1)-ом месте, если эту последовательность отсортировать. Медианой последовательности из четного (k = 2 ⋅ l) количества элементов будем называть элемент, который... http://www.cyberforum.ru/cpp-beginners/thread1242172.html
Требуется идентификатор, исправить ошибки C++
Помогите, пожалуйста, исправить ошибки. class rus_codecvt : public std::codecvt<char, char, std::mbstate_t> { protected: virtual result do_in(std::mbstate_t&, const char* from, const char* from_end, const char*& from_next, char* to, char* to_limit, char*& to_next ) const { const int i = std::min(to_limit - to, from_end - from); OemToCharBuff(from, to, i); from_next = from +...
C++ Написать небольшую прогу, которая понимает изменился ли бинарный файл или нет
Мне нужно написать небольшую прогу, которая понимает изменился ли бинарный файл или нет. #include <windows.h> #include <string> #include <iostream> #include <fstream> int main(int agrc, char** argv) { std::string fileName = "C:/GameDev/Safty Code challenger/OriginalFiles/house_24.bin"; HFILE hFile;
C++ Приостановить выполнение цикла до совершения какого-то действия http://www.cyberforum.ru/cpp-beginners/thread1242042.html
Я пишу дурака. Нужно, чтобы действия походить, отбиться, подкинуть и т.д. происходили до того момента, пока кол-во карт в отбое не будет равно 36. Проблема в том, что программа зацикливается на этом моменте:do { Go(); Defence(); Throw_Card(); //... } while (retreat.Count < 36); я хочу на время приостановить выполнение этого цикла, пока количество карт,...
C++ Порекомендуйте библиотеку для работы с большими числами Добрый день. Нужна библиотека для работы с большими числами, в которой определены следующие операции: умножение, деление, разность, сумма, деление с остатком. Какую библиотеку можете порекомендовать? подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2797 / 1573 / 246
Регистрация: 03.05.2010
Сообщений: 3,649
14.08.2014, 00:25     Для каждой открывающей скобки найти позицию ей соответствующей закрывающей скобки
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/////////////////////////////////////////////////////////////////////////////////////////
//используя СТЕК
//Дана правильная скобочная последовательность (ПСП) , ваша задача для каждой открывающей 
//скобочки найти позицию ей соответствующей закрывающей скобочки.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <complex>
#include <iostream>
#include <map>
#include <stack>
#include <string>
#include <utility>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string                     T_str;
typedef T_str::size_type                T_pos;
typedef std::map        < int,  int >   T_right_bracket_pos_for_left;
typedef std::stack      < T_pos     >   T_left_pos_stack;
typedef std::complex    < int       >   T_complex;
/////////////////////////////////////////////////////////////////////////////////////////
bool    successfully_set_right_bracket_positions_for_left
    (
        T_str   const                   &   parenthesis_str,
        T_right_bracket_pos_for_left    &   right_bracket_pos_for_left
    )
{
    bool                bool_res        =   !parenthesis_str.empty();
    const   char        LEFT_BRACKET    =   '(';
    const   char        RIGHT_BRACKET   =   ')';
    T_left_pos_stack    left_pos_stack;
 
    if( bool_res )
    {
        for( T_pos  pos = 0; pos < parenthesis_str.size(); ++pos )
        {
            char    cur_symb    =   parenthesis_str[ pos ];
 
            if( cur_symb    ==  LEFT_BRACKET )
            {
                left_pos_stack.push( pos );
            }
            else if( cur_symb    ==  RIGHT_BRACKET )
            {
                bool_res    =   !left_pos_stack.empty();
 
                if( !bool_res )
                {
                    break;
                }
 
                right_bracket_pos_for_left[ left_pos_stack.top() ]  =   pos;
                left_pos_stack.pop();
            }//else
        }//for
 
        if( bool_res )
        {
            bool_res    =   left_pos_stack.empty();
        }
    }//if
 
    return  bool_res;
}
/////////////////////////////////////////////////////////////////////////////////////////
void    print_parenthesis_positions( T_right_bracket_pos_for_left   const   &   right_bracket_pos_for_left )
{
    std::for_each
        (
            right_bracket_pos_for_left.begin    (),
            right_bracket_pos_for_left.end      (),
            [] ( T_right_bracket_pos_for_left::value_type   left_pos_and_right_pos )
            {
                std::cout   <<  T_complex
                                    (
                                        left_pos_and_right_pos.first    +   1,
                                        left_pos_and_right_pos.second   +   1
                                    )
 
                            <<  std::endl;
            }
        );
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout   <<  "Введите правильную скобочную последовательность: ";
        T_str   parenthesis_str;
        std::cin    >>  parenthesis_str;
        T_right_bracket_pos_for_left    right_bracket_pos_for_left;
 
        if  (
                successfully_set_right_bracket_positions_for_left
                    (
                        parenthesis_str,
                        right_bracket_pos_for_left
                    )
            )
        {
            print_parenthesis_positions( right_bracket_pos_for_left );
        }
        else
        {
            std::cout   <<  "Выражение некорректно.";
        }
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl;
    }//for
}
 
Текущее время: 15:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru