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

Можно ли добавить в последовательность из различных скобок цифры и знаки, чтобы получилось правильное арифметическое выражение? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнить строки из xls-файлов на совпадение символов и создать файлы с результатами. http://www.cyberforum.ru/cpp-beginners/thread1095750.html
Задача выглядит так. Имеется 2 xls-файла, которые надо сравнить. К примеру, в первом файле цифры с 1,2,3,5,6,7,8,10 А во втором только цифры 2,4,6,8,10. Соответственно результат в третьем файле выглядит так:
C++ Составить класс, который отыскивает проход по лабиринту Помогите пожалуйста. Составить класс, который отыскивает проход по лабиринту. Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице. Программа находит проход через лабиринт, двигаясь... http://www.cyberforum.ru/cpp-beginners/thread1095728.html
C++ Почему не производится операция деления?
Есть код, приведенный ниже. Никак не могу разобраться, почему не производится операция деления при заполнении массива p, заполнения тоже не производится. Пробовала операцию просто присваивания, умножения, все делается, как только ставлю знак деления, ничего не происходит. В файле new1.txt, текст: qwer qw. #include <stdio.h> #include <string.h> #include <conio.h> #include <math.h> #define...
C++ Исключения
читаю про исключения, сама концепция понятна, но стоит ли вообще заострять на исключениях своё внимание? например описан класс exception, от него куча всяких производных классов типа logic_error и т.п., на практике(к примеру на собеседовании или непосредственно в работе) это сильно надо и надо ли в эти классы углубляться? Мне показалось что проще в случае необходимости написать свой класс и...
C++ error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)[20]" в "const char *" http://www.cyberforum.ru/cpp-beginners/thread1095685.html
1>c:\proect\8\8\8.cpp(64): error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)" в "const char *" for(int i = 0; i< 5; i++) { wr_struc (list); if (strcmp(&list.Sostav,osn_sostav)==0 && strcmp(&list.MestoVkomande,attack)==0 ) { i_min=i; }
C++ тестирование менеджера памят Доброго времени суток всем, в универе дали ребяткам лабы: 1. Реализовать менеджер памяти с выделением блоков различного размера. 2. Реализовать менеджер памяти с перемещающимися блоками. 3. Реализовать менеджер памяти со страничным разбиением. 4. Реализовать автономное тестирование менеджера памяти реализованного согласно варианту 1. 5. Реализовать автономное тестирование менеджера памяти... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
03.01.2016, 19:47     Можно ли добавить в последовательность из различных скобок цифры и знаки, чтобы получилось правильное арифметическое выражение?
Вообще-то в арифметических выражениях нельзя вставлять старшие скобки внутрь младших.
В этом случае как-то так:
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
113
114
115
116
117
118
119
120
121
122
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
#include <stack>
///////////////////////////////////////////////////////////////////////////////
typedef std::string             T_str;
typedef std::stack  < char  >   T_symb_stack;
///////////////////////////////////////////////////////////////////////////////
bool        great_bracket
    (
        char    L,
        char    R
    )
{
    T_str   res_str;
    res_str.push_back(L);
    res_str.push_back(R);
 
    return      res_str     ==  "{["
            ||  res_str     ==  "{("
            ||  res_str     ==  "[("
 
            ||  res_str     ==  " {"
            ||  res_str     ==  " ["
            ||  res_str     ==  " (";
}
///////////////////////////////////////////////////////////////////////////////
bool    eq_bracket
    (
        char    L,
        char    R
    )
{
    T_str   res_str;
    res_str.push_back(L);
    res_str.push_back(R);
 
    return      res_str     ==  "{}"
            ||  res_str     ==  "[]"
            ||  res_str     ==  "()";
}
///////////////////////////////////////////////////////////////////////////////
bool    brackets_are_correct( T_str     const   &   s )
{
    char    static  const   SPACE   =   ' ';
    T_symb_stack            symb_stack;
 
    symb_stack.push( SPACE );
 
    for     (
                auto    symb
                :
                s
            )
    {
        if  (
                great_bracket
                    (
                        symb_stack.top(),
                        symb
                    )
            )
        {
            symb_stack.push( symb );
        }
        else if     (
                        eq_bracket
                            (
                                 symb_stack.top(),
                                 symb
                            )
                    )
        {
            symb_stack.pop();
        }
        else
        {
            return  false;
        }
    }//for
 
    return      symb_stack.top  ()  ==  SPACE
            &&  symb_stack.size ()  ==  1;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    srand(unsigned(time(0)));
    T_str   brackets    =   "{}[]()";
 
    for(;;)
    {
        auto    str_len     =   rand() % 6 + 9;
        T_str   s( str_len, 0 );
 
        std::generate
            (
                s.begin     (),
                s.end       (),
 
                [=]
                {
                    return  brackets
                                [
                                    rand() % brackets.size()
                                ];
                }
            );
 
        if  (
                brackets_are_correct( s )
            )
        {
            std::cout   <<  s
                        <<  std::endl;
 
            system("pause");
        }
    }//for
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru