Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скобки в выражении, ...правильно ли расставлены? 
:(
    Опции темы
intel
Дата 30.11.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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

Заранее благодарю за все ваши соображения и коментарии
PM MAIL   Вверх
esperant0
Дата 30.11.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



1) С помощью стека. Видишь ( кладешь ее в стек. Видиш ) достаешь ( из стека. Если в конце стек пуст все хорошо. Если надо достать ( из стека а стек пуст плохо

2) Пишешь граматику, применяешь алгоритм определяющий принадлежит ли строка грамматике.





--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
maxim1000
Дата 30.11.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



можно даже без стека: т.к. все элементы в нём будут одинаковы, то можно просто держать в памяти их количество (т.е. количество незакрытых на данный момент скобок)


--------------------
qqq
PM WWW   Вверх
Akina
Дата 30.11.2007, 22:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Берем ноль и с ним ползем по строке... открывающая - плюс адын, закрывающая - минус. Если в середине получаешь меньше нуля или в конце не ноль - косяк.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
esperant0
Дата 30.11.2007, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(Akina @ 30.11.2007,  22:29)
Берем ноль и с ним ползем по строке... открывающая - плюс адын, закрывающая - минус. Если в середине получаешь меньше нуля или в конце не ноль - косяк.

А если переменная переполнится?


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Akina
Дата 30.11.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(esperant0 @  30.11.2007,  23:32 Найти цитируемый пост)
А если переменная переполнится?

Возьми типа Long Integer... такая строка, которая переполнит переменную, завалит приложение (а то и ОС) из-за недостатка пространства под эту строку  smile 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0630 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.