![]() |
|
|
![]()
|
|
| intel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
Здравствуйте форумчане!
Подскажите пожалуйста как бы мог выглядеть алгоритм для определения правильно ли расставлены скобки в выражении. Юзал поиск, но что-то ничево полезного для себя так и не нашол. Функция bool IsCorrect(String) возвращает true если скобки разставлены правильно, в противном случаи, false Пример: c+(2*(a+3)+b)*(a-b) - true (())*() - true a)b(a+3)/b( - false (a)b)a+3(/b() - false (1+a)b)+2*(a+3)/b(a - false Заранее благодарю за все ваши соображения и коментарии |
|||
|
||||
| esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
1) С помощью стека. Видишь ( кладешь ее в стек. Видиш ) достаешь ( из стека. Если в конце стек пуст все хорошо. Если надо достать ( из стека а стек пуст плохо
2) Пишешь граматику, применяешь алгоритм определяющий принадлежит ли строка грамматике. -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
можно даже без стека: т.к. все элементы в нём будут одинаковы, то можно просто держать в памяти их количество (т.е. количество незакрытых на данный момент скобок)
-------------------- qqq |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Берем ноль и с ним ползем по строке... открывающая - плюс адын, закрывающая - минус. Если в середине получаешь меньше нуля или в конце не ноль - косяк.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
А если переменная переполнится? -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Возьми типа Long Integer... такая строка, которая переполнит переменную, завалит приложение (а то и ОС) из-за недостатка пространства под эту строку -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |