|
1 / 1 / 0
Регистрация: 17.05.2019
Сообщений: 21
|
|||||||||||||||||||||
Создать программу, исправляющую расстановку скобок в строке28.05.2019, 23:52. Показов 2489. Ответов 10
Метки исправить, квадратные, круглые скобки, рекурсивная функция c#, рекурсия, скобки, строка (Все метки)
Задана скобочная последовательность (например, "())[]{}"). Определить, является ли она правильной. Если нет, то исправить её. Решить через рекурсивный метод.
Для начала можно решить и без рекурсий... Вот несколько моих попыток реализовать это: Кликните здесь для просмотра всего текста
Здесь я пытался рассмотреть хотя бы случай, когда открывается круглая скобка, и идёт "ожидание" момента, когда появляется скобка другого типа, чтобы перед её появлением поставить закрывающую круглую скобку.
Кликните здесь для просмотра всего текста
Здесь я совсем заморочился и ввёл массивы для каждого символа скобок, в которые записал их местоположения. Работает, красиво. Но бесполезно... ![]()
Кликните здесь для просмотра всего текста
Далее я попытался ввести метод Но на 15 строчке программа ругается, что индекс выходит из диапазона
Кликните здесь для просмотра всего текста
И. наконец, программа, которая всё же смогла внести в строку какие-то изменения, а именно: добавить открывающую скобку в начале, если строка начинается с закрывающей. Далее я пытаюсь на основе этого сделать рекурсию, но на 21, 28, 35 и 42 строчках программа снова ругается, что индекс уходит за границы массива, и я никак не могу сообразить, что делать дальше...
0
|
|||||||||||||||||||||
| 28.05.2019, 23:52 | |
|
Ответы с готовыми решениями:
10
Debug. Составить программу исправляющую ошибки в заданной строке Исправить расстановку скобок |
|
Модератор
|
||
| 28.05.2019, 23:59 | ||
|
Что касается исправления, то это (в общем виде) не возможно. Вот допустим выражение 4*(5+6+7 - где надо ставить закрывающую скобку: после 6 или после 7?
0
|
||
|
1 / 1 / 0
Регистрация: 17.05.2019
Сообщений: 21
|
|
| 29.05.2019, 00:04 [ТС] | |
|
В моём случае речь идёт не о выражениях, а о последовательностях скобок, таких как "){([)(]{)(})(]({(}(])[({(})()[({)"
А что касается неоднозначных вариантов постановки новых скобок - пусть они будут ставиться при первой возможности.
0
|
|
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 29.05.2019, 00:58 | |
|
не вкурил сути задачи, есть только скобки? и именно их надо привести в правильное расположение, через добавление?
0
|
|
|
1 / 1 / 0
Регистрация: 17.05.2019
Сообщений: 21
|
|
| 29.05.2019, 01:08 [ТС] | |
|
Да, именно так
0
|
|
|
146 / 39 / 26
Регистрация: 11.05.2019
Сообщений: 122
|
|
| 29.05.2019, 01:27 | |
|
DEN2621,
дана строка string s = "))))" как правильно исправить ? Так ()()()() ? или (((()))) а может (())(()) или вообще ((()))() ? какой вариант или все подходят ?
0
|
|
|
1 / 1 / 0
Регистрация: 17.05.2019
Сообщений: 21
|
|
| 29.05.2019, 02:09 [ТС] | |
|
все подходят
Добавлено через 38 минут Алгоритм, который я пытался реализовать в последней версии своей программы: 1. Считать первый символ. Если он является закрывающей скобкой, добавить перед ним соответствующую открывающую; 2. Если он является открывающей скобкой, записать все следующие символы до первой парной скобки в новую подстроку SubString; 3. Вызвать метод Brackets(SubString) от новой подстроки.
0
|
|
|
Модератор
|
||||||||||||
| 29.05.2019, 12:00 | ||||||||||||
|
Структура для пары скобок
Console.WriteLine(FixBrackets("){([)(]{)(})(]({(}(])[({(})()[({)")); возвращает (){([])([])}{()()}{([])([])}Добавлено через 2 минуты Не - ошибка где-то
0
|
||||||||||||
|
Модератор
|
||||||
| 29.05.2019, 12:23 | ||||||
Сообщение было отмечено DEN2621 как решение
Решение
С индексами напутал.
Вот правильный код
){([)(]{)(})(]({(}(])[({(})()[({)возвращает (){([])([])}{()()}()([]({()}))([])[({})({})()[({})]]
1
|
||||||
|
1 / 1 / 0
Регистрация: 17.05.2019
Сообщений: 21
|
|
| 30.05.2019, 00:09 [ТС] | |
|
Это великолепно... Оно работает!
Большое спасибо! Осталось только разобраться, что к чему...
0
|
|
|
Модератор
|
|
| 30.05.2019, 10:27 | |
|
0
|
|
| 30.05.2019, 10:27 | |
|
Помогаю со студенческими работами здесь
11
Проверка на расстановку скобок Проверка строки на правильную расстановку скобок
Проверить правильность расстановки в строке скобок (баланс открывающих и закрывающих скобок) Составить программу, проверяющую своевременность закрытия скобок () в строке символов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|