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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 62
#1

Баланс скобок - C++

27.03.2009, 12:31. Просмотров 1375. Ответов 8
Метки нет (Все метки)

проверить правильность расстановки скобок, используя контейнерные типы(стек)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Night_Light
17 / 17 / 2
Регистрация: 14.02.2009
Сообщений: 86
27.03.2009, 12:33     Баланс скобок #2
Цитата Сообщение от tom Посмотреть сообщение
проверить правильность расстановки скобок, используя контейнерные типы(стек)
а в чём у тебя проблема? не знаешь как пользоваться стеком? )
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 62
27.03.2009, 12:40  [ТС]     Баланс скобок #3
да, с обычным стеком я знаю а с таким нет((
Night_Light
17 / 17 / 2
Регистрация: 14.02.2009
Сообщений: 86
27.03.2009, 12:50     Баланс скобок #4
Цитата Сообщение от tom Посмотреть сообщение
да, с обычным стеком я знаю а с таким нет((
какой это "обычный стэк"? и чем он по твоемому отличается от контейнерного?)
CheshireCat
Эксперт С++
2910 / 1238 / 78
Регистрация: 27.05.2008
Сообщений: 3,321
27.03.2009, 12:52     Баланс скобок #5
Дык, эта..... Встретил открывающую скобку - push ее в стек. Встретил закрывающую - проверяй, что в вершине стека? Если открывающая "симметричного" типа, то pop эту скобку; если нет (включая вариант "стек пуст") - вуаля! на выход, скобки расставлены неправильно и нечего дальше проверять.
В конце смотри - если стек пуст, то скобки расставлены правильно, иначе - неправильно.

"В таком вот аксепте." (с) М.П.Камноедов
YurA_280784
Заблокирован
27.03.2009, 13:09     Баланс скобок #6
Ну дык если ты встречаешь 4-ю закрывающую скобку, а впереди у тебя 3 открывающих, значит по-любэ ошибка - заведи себе два счётчика на '(' и ')' -скобки и сравни эти счётчики в конце
Хотя даже если баланс скобок соблюдается это не свидетельствует о правильности ввода гляди
(((5*sin(x)+a) + 1)*6) + 15 или
(((5*sin()x + a) + 1)*6), так что делай выводы
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 62
29.03.2009, 20:01  [ТС]     Баланс скобок #7
Ну что-то у меня не работает, надо исправить ошибки
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
void main() {
    stack <int, vector <int> > s;
    char k;
    char * string;
    cout<<"Enter string: "<<endl;
    cin>>string;
    s.empty();
    for (int i=0; i!='\0'; i++){
        if ((string[i]=='(')||(string[i]=='[')||(string[i]=='{'))
            s.push(string[i]);
        else
            if ((string[i]==')')||(string[i]==']')||(string[i]=='}')){
                if (s.top==nil)
                    cout<<"Disbalans bolshe zakritix skobok"<<endl;}
            else
                s.pop(k);
        if (string[i]== ')' && ((k=='{') || (k=='[')))
            cout<<"Nesoootvetstvie tipa"<<endl;
        if (string[i]== '}' && ((k=='(') || (k=='[')))
            cout<<"Nesoootvetstvie tipa"<<endl;
        if (string[i]== ']' && ((k=='{') || (k=='(')))
            cout<<"Nesoootvetstvie tipa"<<endl;
        if (s.top == nil)
            cout<<"Balans"<<endl;
        else
            cout<<"Disbalans bolshe otkritix skobok"<<endl; 
        while (!s.empty()) do{
        s.pop(string[i]);
        cout<<string[i];
    }
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 62
31.03.2009, 16:18  [ТС]     Баланс скобок #8
Кто нибудь может глянуть плиззз мою программу)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2009, 12:07     Баланс скобок
Еще ссылки по теме:

Ввести строку символов и найти баланс открывающихся и закрывающихся скобок C++
Баланс скобок C++
C++ Проверить баланс скобок в тексте программы
Проверять строку на баланс скобок C++
C++ Проверить баланс круглых скобок, используя очередь

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

Или воспользуйтесь поиском по форуму:
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 62
06.04.2009, 12:07  [ТС]     Баланс скобок #9
исправте пожалуйста!!
Yandex
Объявления
06.04.2009, 12:07     Баланс скобок
Ответ Создать тему
Опции темы

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