![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
-Антон- |
![]()
Сообщение
#1
|
Гость ![]() |
Мне надо раскрыть скобки в выражении, я вошел в тупик в таком случае, когда (A+C)(A+B) , в первом цткле я такое выражение преобразую в A(A+B)+C(A+B), во втором цикле должно выйти AA+AB+CA+CB, а выходит AA+AB+CA+B, не подскажете в чем ошибка или есть какой-нибудь другой способ. |
![]() ![]() |
Malice |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ошибка в том, что pos всегда ищет с начала строки, а ты похоже думаешь что как то иначе..
По всему коду прогядувается такая логика, например: If pos(')',s)=(pos('(',s)-1) then Хочешь этим найти ")(" ? Для твоего же выражения с двумя скобками не выйдет.. И далее похоже. А вообще - здесь однозначно панет рекурсией. Вдруг выражение с вложенными скобками или умножение стоит по разные стороны от скобок, все варианты не переберешь. |
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
Рекурсией? Это например как, на ловах хотя бы...? Тоесть мне вообще надо это все дело подругому делать?
|
Malice |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Рекурсией? Это например как, на словах хотя бы...? Тоесть мне вообще надо это все дело подругому делать? Ну это мне так кажется, ведь будет гараздо проще.. Нужно будет научить прогу базовым операциям, типа - раскрытие скобки при умножении слева, при умножении справа, умножение скобок между собой например.. Вот примерчик небольшой с принципом: uses crt; Конечно это только пример. Умножение скобок типа (a+b)(b+c)(d+a) тоже не обязательно сильно наворачивать достаточно уметь раскрывать 2 скобки. Т.е. нашел что они умножаются (a+b)(b+c)(d+a), выделенный фрагмент передал в на упрощение, окружил скобками и приклеил опять обратно. Вышло (ab+ac+bb+bc)(d+a) и по кругу.. Сообщение отредактировано: Malice - 1.12.2007 14:37 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:36 |