Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 2
Регистрация: 30.12.2013
Сообщений: 56

Реализация стека/очереди для выдачи номеров пар скобок в тексте

05.11.2015, 08:45. Показов 2465. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Используя очередь или стек, решить задачу: в файле записан текст, сбалансированный по круглым скобкам. Требуется для каждой пары соответствующих открывающей и закрывающей скобок напечатать номера их позиций в тексте, упорядочив пары номеров по возрастанию номеров позиций:
а) закрывающих скобок;
(например, для текста a+(45-f(x)*(b-c)) надо напечатать: 8 10; 12 16; 3 17)
б) открывающих скобок.
(например, для текста a+(45-f(x)*(b-c)) надо напечатать: 3 17; 8 10; 12 16)
Пункт а я решил: добавляем номер символа в стек, если встретился символ "(", когда встречаем ")", то печатаем элемент стека (номер открывающей скобки) и просто наш счётчик, который идёт по-символьно. Далее удаляем из стека этот номер скобки. Если встречаем снова ")", но печатаем снова элемент стека (номер открывающей скобки) и наш счётчик (номер закрывающей скобки).

А как реализовать второй пункт? Когда нам вначале нужно вывести номера внешних скобок, а потом внутренние (пункт б)?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2015, 08:45
Ответы с готовыми решениями:

Простейшая реализация стека и очереди
Имеется пример реализации стека: #include <cstdlib> #include <iostream> using namespace std; class Stack { private: ...

Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар
помогите пожалуйста решить Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое...

Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар.
Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар. ...

1
15 / 15 / 11
Регистрация: 25.04.2014
Сообщений: 39
05.11.2015, 10:42
Лучший ответ Сообщение было отмечено Kvayzer как решение

Решение

б) открывающих скобок.
(например, для текста a+(45-f(x)*(b-c)) надо напечатать: 3 17; 8 10; 12 16)
Ну тут есть несложное решение через список, но если строго требуется использовать только очереди или стеки, то можно сделать так:

Берем стек позиций открывающихся скобок и стек обычных строк.

Идем по входной строке, записываем в первый стек все открывающиеся скобки. Если встречаем закрывающуюся, то берем открывающуюся из стека и записываем их пару в строку (sprintf, например) и так, пока не закончится входная строка или не встретим новую открывающуюся скобку. В последнем случае закрываем предыдущую строку в стеке и создаем новую, пишем теперь в нее.
Ну и так далее. Вот пример (строка, только из скобок, нумерация с 1):

( ( ) ( ( ( ) ) ) )

1.
> Первый стек пустой
> Второй стек пустой

2.
> 1, 2
>

3.
> 1, 4, 5, 6
> "(2, 3)"

4.
> 1
> "(2, 3)", "(4, 9) (5, 8) (6, 7)"

5.
>
> "(2, 3)", "(4, 9) (5, 8) (6, 7)", "(1, 10)"

Распечатываем стек строк:
(1, 10), (4, 9), (5, 8), (6, 7), (2, 3)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2015, 10:42
Помогаю со студенческими работами здесь

Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок
Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок, которые закрываются и открываются. Количество...

Динамическая реализация стека и очереди.
Реализовать программу, выполняющую следующий набор операция со стеком на основе механизма динамического распределения памяти: -проверку...

Реализация стека и очереди на основе списка
1. Создать базовый класс CList (линейный однонаправленный cписок) с полями: указате-ли на следующий элемент; информационная часть –...

Найти количество номеров (пар), для которых А(i)<B(i)
Помогите, не могу разобраться как сделать:( №2 Даны массивы А и В. Найти количество номеров (пар), для которых А(i)&lt;B(i)

Использование стека для проверки открывающихся и закрывающихся скобок на C#
Здравствуйте! Необходимо реализовать программу для проверки в тексте на открывающиеся и закрывающиеся скобки с помощью стека. Логика в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru