Форум программистов, компьютерный форум 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
Эксперт CАвтор FAQ
 Аватар для Evg
17193 / 5447 / 337
Регистрация: 30.03.2009
Сообщений: 14,794
Записей в блоге: 26
24.04.2009, 20:03     Баланс скобок
У тебя подход к задаче неправильный. Ты прочитал все левые и правые скобки и напихал их в стек, а потом их все оттуда достал. Т.е непонятно вообще зачем тут стек (мог бы и в обычный буффер поместить)

Правильный подход такой: в первом же цикле, где ты считываешь из файла:
1. При чтении левой скобки суёшь её в стек
2. При чтении правой скобки:
- если стек пуст, значит ошибка - лишняя (несбаллансированная) правая скобка
- достаёшь значение из стека (что там можно не смотреть, потому что суёшь ты только левые скобки).
3. По окнчании цикла проверяешь стек, если стек не пустой, значит присуствуют лишние (несбаллансированные) левые скобки

Это в том случае, если тебе поставлена задача обязательно стек использовать. Если стек не нужно, то просто используй счётчик. Для левой скобки увеличивай, для правой уменьшай. Если счётчик стал отрицательным - лишняя правая скобка. Если по окончании счётчик не равен нулю - значит есть лишние левые скобки
 
Текущее время: 09:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru