Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Kvayzer
0 / 0 / 2
Регистрация: 30.12.2013
Сообщений: 56
1

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

05.11.2015, 08:45. Просмотров 689. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2015, 08:45
Ответы с готовыми решениями:

Простейшая реализация стека и очереди
Имеется пример реализации стека: #include <cstdlib> #include <iostream>...

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

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

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

Программа для поиска в тексте номеров телефона
Пожалуйста дорогие и умные программисты, помогите юзверю написать программу на...

1
Epicus
15 / 15 / 11
Регистрация: 25.04.2014
Сообщений: 39
05.11.2015, 10:42 2
Лучший ответ Сообщение было отмечено 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2015, 10:42

Создание стека С++ и реализация основных для него функций
Доброго времени суток.Нужна консольная программа,которая создаст стек с...

Для каждой пары скобок в строке напечатать номер и их позиции в тексте (используя стек)
Для каждой пары скобок напечатать номер и их позиции в тексте. Используя стек....

Что вернет стековая функция разбора пар скобок?
Что вернет функция, если она принимает как параметр такую строку:...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru