![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Prophet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.12.2007 Репутация: нет Всего: нет |
Помогите пожалуйста. Начал программировать на Borland C++ недавно, а тут надо сделать программу, для создания которой моих знаний недостаточно. Алгоритм составить смог, а вот превратить его в код не в состоянии...
Мне надо написать программу, позволяющую проверить корректность расстановки скобок в математическом выражении. Математическое выражение вводится с клавиатуры в виде строки символов (не более 30 символов). Проверка оформляется в виде подпрограммы, которая должна выдавать на экран сообщения вида: "соответствует", "пропущено 2 закрывающих скобки" |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
Так какой алгоритм придумал?
|
|||
|
||||
| Sharkfire |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 30.11.2006 Где: Одесса Репутация: нет Всего: 2 |
Так нужен твой алгоритм, для портирования, как же так мы тебе поможен...
ну вообщем то так: Писал не в компиляторе а пряма тут.
|
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 21 Всего: 92 |
Sharkfire, недостаточно просто посчитать количество тех и других скобок и сравнить количество.
Необходимо также проверять их порядок например последовательность ")(" - неправильная, хотя скобок закрывающих столько же, сколько и открывающих. Задача легко решается стеком, я выкладывал тут решение (в Центре помощи), просто кому-то влом искать. |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
|
||||
|
|||||
| Prophet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.12.2007 Репутация: нет Всего: нет |
Спасибо большое. Я написал вот так вот в конечном итоге:
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Два замечания: 1) В последнем if'е стоит присваивание вместо сравнения 2) Твоя программа не поймает случаев НЕПРАВИЛЬНОГО балансирования скобок. Например )a( для нее правильная расстановка скобок |
||||
|
|||||
| Prophet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.12.2007 Репутация: нет Всего: нет |
xvr, Насчёт if всё правильно, так как тут уже не надо сравнения. Тут идёт вариант когда количество открывающих и закрывающих скобок одинаковое. Вот проблема с вариантом, когда выражение начинается с закрывающей скобки, действительно присутствует.
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Вообще то, когда видишь код
Возникает законное подозрение, что автор хотел написать if(x==y), тем более, что по логике программы это так и есть. То, что этот if работает и с присваиванием вместо сравнения - чистая случайность, на самом деле он вообще не нужен - нужно было просто написать printf("Sootvetstvuet\n"); Кроме того, этот код (с присваиванием) все равно не правильный - при нулевом количестве скобок ВООБЩЕ ничего выведено не будет. |
||||
|
|||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |