Задача «Вирус»
В файле INPUT.TXT задано арифметическое выражение состоящее из цифр, букв, скобок и знаков арифметических операций. Но вирус удалил из данного файла некоторые скобки, стоящие в начале и в конце выражения. Написать программу, выводящую в файл OUTPUT.TXT исправленное выражение. Максимальная длинна исходной строки не более 100 символов.
INPUT.TXT |
(3+(2*6))*3-(((5/4-3)*9-(7-4) |
OUTPUT.TXT |
((3+(2* 6)) * 3 -(((5/4-3 )* 9-(7-4))); |
Разбор задачи №1 "Вирус"
Камско-Устьинского муниципального района РТ
Задача на применение стека. Введём счетчик. Посимвольно проверяем строку. Если очередной символ "(", увеличиваем счётчик на единицу, если ")" - уменьшаем на единицу.
Остальные символы игнорируем.Если в какой-то момент счётчик принял отрицательное значение, то это значит, что закрытых скобок больше, чем открытых, т.е. в начале строки нужно добавить "(". Выводим этот символ в выходной файл и обнуляем счётчик. Когда строка просмотрена полностью, выводим её в файл вывода.
Осталось определить нет ли лишних открытых скобок. Это возможно в том случае, если счётчик в конце просмотра имеет положительное значение. Открываем цикл от 1 до значения счетчика и выводим в этом цикле символ ")".