Олимпиадная информатика - 2010

Разбор и решение задач муниципального уровня 2010-11 года

Задача «Вирус»

В файле 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 до значения счетчика и выводим в этом цикле символ ")".

Hosted by uCoz