1 / 1 / 0
Регистрация: 03.12.2010
Сообщений: 23
|
||||||
1 | ||||||
Задачка на стек28.12.2011, 02:26. Показов 1124. Ответов 7
Метки нет (Все метки)
Здравствуйте. Есть такая задачка
Есть текст, сбалансированный по круглым скобкам. Нужно вывести номера соответствующих открывающей и закрывающей скобок , упорядочив пары в порядке возрастания номеров позиций открывающих скобок. пример : A + (45 - F (X) * (B - C)) вывести : 3 17; 8 10; 12 16 ------------ Сам стек уже реализован, ну и функции работы с ним 1) push() - добавить в вершину стека 2) pop() - вытолкнуть верхний элемент из стека 3) top() - читать значение верхнего элемента. так же функции isNull - проверка на конец и destroy разрушить стек. Реализация стека и функции - правильные, нам их готовые дал преподаватель. Не могу сообразить как правильно оформить алгоритм. Вот мои мысли, с комментариями, которые может быть очень очевидны и глупы
0
|
28.12.2011, 02:26 | |
Ответы с готовыми решениями:
7
Стек. Создать случайно генерированный стек и поменять местами первый элемент с i создать стек,заполнив числами 1,2,3...n.Посмотреть его содержимое,удалить стек Заполнить очередь и стек и поменять их содержимое местами через дополнительный стек. Используя стек, описать функцию проверяющую, является ли стек пустым |
4744 / 2556 / 888
Регистрация: 29.11.2010
Сообщений: 5,525
|
||||||
28.12.2011, 03:20 | 2 | |||||
0
|
1 / 1 / 0
Регистрация: 03.12.2010
Сообщений: 23
|
|
28.12.2011, 03:23 [ТС] | 3 |
К сожалению, мне нужно использовать модуль, который дал преподаватель. Так то я в поиске находил , но там по другому.
0
|
4744 / 2556 / 888
Регистрация: 29.11.2010
Сообщений: 5,525
|
|
28.12.2011, 03:29 | 4 |
В чем сакральный смысл этого высказывания?
Ну перепиши тогда, используя этот загадочный "модуль". Я не могу его использовать, у меня его нет, и в поиске я не нашел "модуля, который дал преподаватель".
0
|
1 / 1 / 0
Регистрация: 03.12.2010
Сообщений: 23
|
|||||||||||
28.12.2011, 03:39 [ТС] | 5 | ||||||||||
0
|
4744 / 2556 / 888
Регистрация: 29.11.2010
Сообщений: 5,525
|
||||||||||||||||||||||||||
29.12.2011, 18:23 | 6 | |||||||||||||||||||||||||
Вот и замени стандартный объект std::stack на свой.
Объясняю популярно. Вместо
0
|
1 / 1 / 0
Регистрация: 03.12.2010
Сообщений: 23
|
|||||||||||||||||||||
30.12.2011, 02:00 [ТС] | 7 | ||||||||||||||||||||
Не прокатывает, выскакивают ошибки: 1>------ Построение начато: проект: 3, Конфигурация: Debug Win32 ------ 1> st_main.cpp 1>.....\st_main.cpp(27): error C2664: st_modul::Stack:ush: невозможно преобразовать параметр 1 из "Bracket" в "const st_modul::base &" 1> Причина: невозможно преобразовать "Bracket" в "const st_modul::base" 1> Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен 1>...\st_main.cpp(34): error C2228: выражение слева от ".bracket" должно представлять класс, структуру или объединение 1> тип: st_modul::base 1>...\st_main.cpp(35): error C2228: выражение слева от ".position" должно представлять класс, структуру или объединение 1> тип: st_modul::base ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== Добавлено через 2 часа 47 минут Я всё таки смог родить по своим мыслям, правда результат немножко некорректный. Что у меня получается: При выражении которое из первого сообщения A+(45-F(X)*(B-C)) программа выводит результат так : 8 10; 12 16; 3 17; т.е., программа выводит номера скобок в порядке возврастания позиций ЗАКРЫВАЮЩИХ скобок, а мне нужно чтобы выводила в порядке возврастания позиций ОТКРЫВАЮЩИХ скобок, т.е вот так : 3 17; 8 10; 12 16 Вот тут у меня начинается ступор, я не вижу простого решения, у меня складывается ощущение что всё надо совсем подругому реализовывать... Вот что у меня получилось : ( смотреть , в принципе, стоит только первый кусок , т.к в нём алгоритм который видимо и работает немного не так как хотелось бы)
0
|
4744 / 2556 / 888
Регистрация: 29.11.2010
Сообщений: 5,525
|
||||||
30.12.2011, 20:43 | 8 | |||||
Тут надо проверить на корректность. Есть ли в стеке открывающая скобка.
Клади найденные пары цифр в стек, затем извлекай. Вообще, этот порядок хорош тем, что это прямой порядок вычисления.
0
|
30.12.2011, 20:43 | |
Помогаю со студенческими работами здесь
8
Задачка с массивом и задачка с формулами Ньютона и Лагранжа Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами Описать и реализовать класс Стек, моделирующий массивом стек, для хранения любых объектов Заполнить стек 20 случайными числами с интервала [0; -10]. Вывести стек на экран. Изъять из стека каждый четвертый элеме Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |