Проверить баланс скобок в арифметическом выражении по следующему алгоритму - Pascal
Формулировка задачи:
Проверить баланс скобок в арифметическом выражении по следующему алгоритму. Сравнить по
очереди каждый символ с “(“ и с “)”. Если следующий символ “(“, тога некоторую числовую
переменную (сначала ее нужно обнулить) увеличиваем на 1, если символ “)”, тогда уменьшить на 1.
Если закрывающая скобка появилась раньше, чем открывающая, тогда значение числовой переменной
должно быть отрицательным – скобки не сбалансированы и последующую проверку можно
остановить. Если текст проверен до конца и значение переменной равно 0, тогда скобки
сбалансированы.
Помогите, пожалуйста. На форуме есть такие темы, но не нашел нужного.
Решение задачи: «Проверить баланс скобок в арифметическом выражении по следующему алгоритму»
textual
Листинг программы
var i,k:byte; s:string; begin writeln('Введите строку, содержащую круглые скобки'); readln(s); k:=0; i:=1; while (i<=length(s))and(k>=0) do begin if s[i]='('then inc(k){если открываем +1} else if s[i]=')'then dec(k);{закрываем -1} if k>=0 then inc(i);{иначе вперед} end; if k=0 then write('Скобки сбалансированы') else write('Скобки не сбалансированы') end.
Объяснение кода листинга программы
- Объявляются переменные:
i
- переменная типа byte, используемая для итерации по символам в строке.k
- переменная типа byte, используемая для подсчета баланса открытых и закрытых скобок.s
- переменная типа string, в которую пользователь вводит строку, содержащую круглые скобки.
- Пользователю выводится сообщение
Введите строку, содержащую круглые скобки
с помощью процедурыwriteln
и считывается введенная строка с помощью процедурыreadln
. - Устанавливается начальное значение переменной
k
равное 0, и переменнаяi
устанавливается в 1 для итерации по символам строки. - В цикле
while
проверяется, что переменнаяi
меньше или равна длине строкиs
и что значение переменнойk
является неотрицательным.- Если условие выполнено, выполняется следующий блок:
- Если символ в строке
s
с индексомi
равен(
, увеличивается значение переменнойk
на 1. - Иначе, если символ в строке
s
с индексомi
равен)
, уменьшается значение переменнойk
на 1. - Если значение переменной
k
больше или равно 0, инкрементируется переменнаяi
для перехода к следующему символу. Если значениеk
отрицательно, цикл завершается.
- Если символ в строке
- Если условие выполнено, выполняется следующий блок:
- После окончания цикла
while
проверяется значение переменнойk
:- Если
k
равно 0, выводится сообщение 'Скобки сбалансированы'. - В противном случае, выводится сообщение 'Скобки не сбалансированы'.
- Если
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д