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

Баланс круглых скобок - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ вывести на печать значения функции z = sin(x/(x-2)) лежащие в интервале от -0.4 до 0.8 для X изменяющегося от 8 до 6 с шагом 0.1 http://www.cyberforum.ru/cpp-beginners/thread255049.html
Помогите написать программу, совсем плохо разбираюсь в C++ Вот исходные данные Написать программу рассчета функции 3 видами циклов (с постусловием, с предусловием, с параметром) и вывести на печать значения функции z = sin(x/(x-2)) лежащие в интервале от -0.4 до 0.8 для X изменяющегося от 8 до 6 с шагом 0.1, учесть область определения функции Заранее огромное спасибо!))
C++ Консоль Написал вот такую программу #include <windows.h> #include <conio.h> int main() { HWND hWnd=FindWindow("ConsoleWindowClass",NULL); HDC hDC=GetDC(hWnd); RECT Rect; GetClientRect(hWnd,&Rect); int l=10,t=10,r=90,b=90; http://www.cyberforum.ru/cpp-beginners/thread255043.html
Программа выполнения арифметических действий с очень большим целыми числами C++
Программа выполнения арифметических действий с очень большим целыми числами. Примерно с такими числами: 457332896548547 1.Вывести число из файла. 2.Вывод многоразрядного числа в файл или на экран. 3.Сложения двух положительных чисел. 4.Операции сравнения чисел. 5.Умножения многоразрядного числа на короткое. 6.Вычитания (разница) двух многоразрядных чисел. 7.Деления.
C++ Программа выполнения арифметических действий с очень большим целыми числами
Программа выполнения арифметических действий с очень большим целыми числами. Примерно с такими числами: 457332896548547 1.Вивести число з файлу. 2.Виведення багаторозрядного числа у файл або на екран. 3.Додавання двох додатніх чисел. 4.Операції порівняння чисел. 5.Множення багаторозрядного числа на коротке. 6.Віднімання(різниця) двох багаторозрядних чисел. 7.Ділення.
C++ Аргументы функций (синтаксис) http://www.cyberforum.ru/cpp-beginners/thread255017.html
ПАМАГИТЕ не могу разобраться с функциями а именно с аргументами и синтаксисом,в большинстве литературы эту информацию опускают.(какими могут быть аргументы как они влияют на функуию) если где-то есть такая информация подскажите.
C++ Работа со строками Подскажите пожалуйсто!!! Как удалить часть строки не создавая при этом новой строки? подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
18.03.2011, 07:17     Баланс круглых скобок

Не по теме:

ForEveR, ну так сделал бы чтоб сразу и квадратные, и круглые, и фигурные скобки считались



Добавлено через 3 минуты
Кстати, реализация неправильная - для примера введи ")"

Добавлено через 31 минуту
Как-то так:
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
#include <iostream>
#include <cstdlib>
#include <stack>
 
bool is_balanced(const char*);
bool is_opening_bracket(char);
bool is_closing_bracket(char);
char opening_bracket(char);
 
int main(int argc, char* argv[])
{
    if(argc == 1)
    {
    std::cerr << "No input" << std::endl;
    return EXIT_FAILURE;
    }
 
    for(size_t i = 1; i < argc; ++i)
    std::cout << argv[i] << ": "
          << (is_balanced(argv[i]) ? "balanced" : "unbalanced")
          << std::endl;
 
    return EXIT_SUCCESS;
}
 
bool is_balanced(const char* expr)
{
    std::stack<char> stk;
 
    for( ; *expr; ++expr)
    {
    if(is_opening_bracket(*expr))
        stk.push(*expr);
    else if(is_closing_bracket(*expr))
    {
        if(stk.empty() || stk.top() != opening_bracket(*expr))
        return false;
        else
        stk.pop();
    }
    }
 
    return stk.empty();
}
 
bool is_opening_bracket(char ch)
{
    switch(ch)
    {
    case '(':
    case '{':
    case '[':
    case '<':
    return true;
 
    default:
    return false;
    }
}
 
bool is_closing_bracket(char ch)
{
    switch(ch)
    {
    case ')':
    case '}':
    case ']':
    case '>':
    return true;
 
    default:
    return false;
    }
}
 
char opening_bracket(char ch)
{
    switch(ch)
    {
    case ')':
    return '(';
 
    case '}':
    return '{';
 
    case ']':
    return '[';
 
    case '>':
    return '<';
 
    default:
    return 0;
    }
}
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
nameless@nameless-desktop:~/cpp-sample$ ./cpp-sample 
No input
nameless@nameless-desktop:~/cpp-sample$ ./cpp-sample \
> "()[{<k>}(foo)bar]" \
> ")ba" \
> "ab)" \
> "(abc)" \
> "(()((()))(()))" \
> "(this{is{another}balanced[bracket<expression>for]sure})" \
> "[but(this>one<is)not]"
``()[{<k>}(foo)bar]``: balanced
``)ba``: unbalanced
``ab)``: unbalanced
``(abc)``: balanced
``(()((()))(()))``: balanced
``(this{is{another}balanced[bracket<expression>for]sure})``: balanced
``[but(this>one<is)not]``: unbalanced
nameless@nameless-desktop:~/cpp-sample$
 
Текущее время: 10:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru