Строки · 40 из 43
Скобки стеком
Лабораторная «стек». Борис Аркадьевич пишет на доске ([)] и спрашивает, правильно ли расставлены скобки. Половина группы считает открывающие и закрывающие, получает поровну и говорит «да». А компилятор на такой строке ругается — и показывает место ошибки.
Что сделать
Проверьте скобки трёх видов в строке и найдите место первой ошибки — как это делает компилятор.
Что приходит
stroka— текст со скобками(),[],{}и любыми другими знаками
Что вернуть
-1, если скобки расставлены правильно; иначе — номер места ошибки, с нуля (что считать местом — в «Подробных правилах»).
Допишите функцию proverit в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
proverit("a(b[c]d)e")
-1
Знаки, кроме шести скобок, не учитываются. Каждой закрывающей скобке должна соответствовать последняя ещё не закрытая открывающая того же вида.
Место ошибки:
- закрывающая скобка, когда открытых нет или последняя открытая — другого вида, — номер этой закрывающей;
- строка кончилась, а открытые остались, — номер самой первой из оставшихся незакрытыми.
Номера — с нуля, по всей строке, вместе с прочими знаками.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.