|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.06.2021, 19:52 | #1 |
Пользователь
Регистрация: 03.03.2021
Сообщений: 21
|
Проверка скобочного итога.
Здравствуйте. Помогите пожалуйста, мне нужна ввести выражение с клавиатуры и определить является ли она формулой или нет. Если это формула, то нужна найти самую внутреннюю скобку и проверить является ли это скобка формулой, если да, то заменить на любую переменную, потом произвести тоже самое с другой скобкой.
Пример: Допустим (Av(B^C)vB), находим самую внутреннюю скобку это (B^C), если это формула заменяем её переменной, допусти это формула, заменяем на R, получаем скобку (AvRvB) теперь проверяем эту скобку, это формула опять заменяем на R и в итоге получается просто R. Моя проблема в том, не могу понять как сделать так, чтобы он проверял сначала внутреннюю скобку, т.е находил саму правую "(" и шёл назад. |
09.06.2021, 23:07 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Пишем функцию, в которой:
смотрим строку до тек пор, пока не встретим закрывающуюся скобку. Если скобочная последовательность правильная, то предыдущая скобка была открывающейся. "Выкусываем" подстроку, вместе со скобками. Передаём полученную подстроку в функцию, которая проверяет на формулу и возвращает True или False. Если вернулось True, то вместо "выкушенной" подстроки вставляем то, что вам нужно, а иначе - делаем то, что у вас не описано. Строка, полученная, после первой обработки не содержит подстроки с парой "внутренних скобок". Эту строку вновь передаём в функцию для поиска вложенных подстрок, ограниченных круглыми скобками. Так повторяем до тех пор, пока в строке не останется скобок. PS: Есть ли скобки в строке проверяет та же функция, которая, не обнаружив скобок, вернёт соответствующее сообщение. Думаю, что задачу можно решить через рекурсию. Добавлено: Код:
В цикле for k in range(len(myL)) ищем открывающуюся скобку. Если находим, то фиксируем её положение (a = k). Просматриваем далее до тех пор, пока не обнаружим закрывающуюся скобку. Если по пути встречаем открывающуюся скобку, то заменяем сохранённое ранее значение (a = k). Если встретили закрывающуюся скобку, то фиксируем её позицию (b = k) и выполняем необходимые операции.
Как-то так, ...
Последний раз редактировалось ViktorR; 10.06.2021 в 17:57. |
10.06.2021, 17:55 | #3 |
Пользователь
Регистрация: 03.03.2021
Сообщений: 21
|
Спасибо
|
10.06.2021, 19:11 | #4 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Нашлось немного времени. Сделал через строку.
Код:
Как-то так, ...
|
12.06.2021, 11:54 | #5 |
Пользователь
Регистрация: 03.03.2021
Сообщений: 21
|
Спасибо Огромное !!!)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка БД | anatoliy1992 | Помощь студентам | 1 | 10.08.2015 10:20 |
Вставка строк (с сохранением формулы) со смещением общего итога вниз | DIMONRUS | Microsoft Office Excel | 10 | 07.08.2013 16:06 |
excel.Проверка VBA и проверка функции | Будда | Помощь студентам | 0 | 14.04.2011 21:10 |
проверка на IE | TDrive | JavaScript, Ajax | 2 | 05.03.2010 13:41 |