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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчет гласных.согласных,знаков препинания в тексте http://www.cyberforum.ru/cpp-beginners/thread31416.html
скажите,пожалуйста..где у меня ошибка....программа считает совершенно неправильно( (кусок из программы) { m_Out=0; CString s=m_Edit1; while (!s.IsEmpty()) { int i=s.FindOneOf(". :;,!?'"); if(i<0)
C++ Вычислить сумму отрицательных элементов массива В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) сумму отрицательных элементов http://www.cyberforum.ru/cpp-beginners/thread31412.html
Функция возвращает массив C++
Как сделать чтобы функция возвращала массив(не исползуя указатели):(. К присмеру: ... char v; // //заполнение массива // return v; ...
Тормозит Borland C++ 3.1 C++
У меня Windows XP, этот компилятор почему-то тормозит систему..
C++ решить РГР http://www.cyberforum.ru/cpp-beginners/thread31392.html
Проекционный Экран. Экран монитора представляет собой плоскость от которой на растоянии L1 и L2 удалены слайд с произвольным символом и источник света. Отобразить на экране проекцию слайда если он расположен под углами а1 и a2 к экрану соответсвенно в вертикальной и горизонтальной плоскости. Необходимо иметь возможность изменять углы наклона слайда в реальном времени. Вот так меня на РГР...
C++ Найти номера элементов массива i и j, дающих минимальную разницу значений Xi-Yj Даны два массива: и . Найти номера элементов массива i и j, дающих минимальную разницу значений Xi-Yj. напечатать эти элементы и их номера. Х= k=8 Y= n=12. Помогите пожалуйста, никак не получается :((( подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,352
Записей в блоге: 26
24.04.2009, 23:51     Баланс скобок
Ты написал второй вариант - во втором if'е, где else if(c == ')') надо делать pop
Т.е. при достижении левый скобки засовываем в стек (push), а при достижении правой скобки высовываем из стека (pop) то, что там лежит (зотя что там лежит, нам не важно)

Давай просто попробуем смоделировать стек звёздочками
У тебя выражение "((())())"
Начало: стек пустой
1-й символ = '(' - push, стек стал такой: *
2-й символ = '(' - push, стек стал такой: **
3-й символ = '(' - push, стек стал такой: ***
4-й символ = ')' - pop, стек стал такой: **
5-й символ = ')' - pop, стек стал такой: *
6-й символ = '(' - push, стек стал такой: **
7-й символ = ')' - pop, стек стал такой: *
8-й символ = ')' - pop, стек стал пустой
При этом неважно, что пихать в стек, я пихал туда звёздочки. Нам важно лишь состояние стека (грубо говоря, количество элементов)

Теперь неправильное выражение с избытком правых скобок: (()))
Начало: стек пустой
1-й символ = '(' - push, стек стал такой: *
2-й символ = '(' - push, стек стал такой: **
3-й символ = ')' - pop, стек стал такой: *
4-й символ = ')' - pop, стек стал пустой
5-й символ = ')' - pop, но стек уже пустой, а потому pop сделать не можем - ошибка (избыток правх скобок)

Теперь неправильное выражение с избытком левых скобок: ((())
Начало: стек пустой
1-й символ = '(' - push, стек стал такой: *
2-й символ = '(' - push, стек стал такой: **
3-й символ = '(' - push, стек стал такой: ***
4-й символ = ')' - pop, стек стал такой: **
5-й символ = ')' - pop, стек стал такой: *
Сиволы кончились, но стек у нас не пустой -ошибка (избыток левых скобок)
 
Текущее время: 21:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru