![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 28.09.2011
Сообщений: 17
|
![]()
Пропустил тему о стеках и очередях на парах, а сейчас по ней лабу нужно написать.
Задание: "С помощью стека проверьте правильность расставленных в данном арифметическом выражении круглых скобок". В учебнике темы нет, нагуглить по этому заданию смог только алгоритм Рутисхаузера, но совсем не понял, как облачить его в код. Если кто-то не против помочь, покажите хотя бы часть кода для этого задания или даже целую программу и главное - объяснение, что и для чего там. Можно и просто ссылки на похожите задания. Написать мне это нужно на Си. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 06.07.2009
Сообщений: 27
|
![]()
смотришь каждый символ строки начиная с начала
если встречается символ ( то добавляешь его в стек если встречается символ ) то смотришь не пустой ли стек, если не пустой идешь дальше, если пустой значит расстановка скобок неверная как дойдешь до конца строки проверяешь пустой ли стек, если пустой то все хорошо, если нет то не хватает закрывающих т.е. провал |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Вообще стек здесь не нужен. Это все равно что стрелять из пушки по воробьям. Достаточного одного целого числа, так как конкретная скобка или ее конкретное местоположение для определение корректности не нужно.
Изначально берется число - 0. Открывающая скобка +1. Закрывающая скобка -1. Если во время обработки число скобок уйдет в минуса - значит выражение некорректно встретилась закрывающая скобка раньше открывающей. Ну и как было сказано выше - если после обработки выражения число более 0 значит остались незакрытые скобки.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 28.09.2011
Сообщений: 17
|
![]()
Но задание ясно указано - использовать стек, что прискорбно.
Хотелось бы про конструкции стеков, объявление, параметры... в гугле все несколько перегружено как мне кажется ![]() |
![]() |
![]() |
![]() |
#5 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,837
|
![]()
С помощью стека проверьте правильность расставленных в данном арифметическом выражении круглых скобок
Тут, возможно, все сложнее. К примеру, такое выражение неправильное: (5+3()), хотя скобки нормально закрываются. Для проверки такого выражения как раз и нужен стек или рекурсия. Но задачка будет несколько сложнее. E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Arigato, логика и здравый смысл говорит, что Вы правы. Но формально, если придираться, то
Цитата:
Код:
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 11.12.2011 в 20:12. |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 28.09.2011
Сообщений: 17
|
![]()
И все-таки, как это реализовать на Си?
![]() |
![]() |
![]() |
![]() |
#8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,837
|
![]()
Utkin, смотря что понимать под правильным расставлением скобок. Если только порядок их следования и закрытие, то да. А ведь можно считать, что скобки неправильно расставлены, потому что появляются там, где их не должно быть.
torren108, открыть редактор кода и туда при помощи клавиатуры вбивать программу. E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка на колличество скобок! | Lemo | Помощь студентам | 2 | 01.11.2009 15:16 |
Проверка правильности IP адреса | Nester | Помощь студентам | 2 | 23.08.2009 14:39 |
Проверка правильности ввода. | Whiplash | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 14.11.2008 18:00 |
Проверить равенство числа открывающих и закрывающих круглых скобок | 010 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 18.05.2008 00:27 |
Проверка правильности | KORT | Помощь студентам | 3 | 23.04.2007 20:23 |