Проверить сбалансированность скобок в тексте - PascalABC.NET
Формулировка задачи:
Проверить сбалансированность скобок в тексте(скобки сбалансированы,если закрывающая скобка расположена после соответствующей открывающей и их количества совпадают).
Решение задачи: «Проверить сбалансированность скобок в тексте»
textual
Листинг программы
begin
var S := ReadLnString('Введите текст, содержащий скобки (),' + NewLine +
'для проверки их сбалонсированности:');
var P := 0; // Переменная для проверки баланса скобок
var C := 0; // Просто для подсчёта количества скобок
WriteLn;
for var i := 1 to S.Length do
case S[i] of
'(' : begin // Скобка открвающая
P += 1;
C += 1;
end;
')' : begin // Скобка закрывающая
P -= 1;
C += 1;
if P < 0 then // Закрывающих скобок больше, чем открывающих
begin
WriteLn('Скобки не сбалансированы: закрывающая скобка встречена раньше открывающей.');
Halt;
end;
end;
end; // Прочие символы строки нам не интересны...
if P > 0 then
WriteLn('Скобки не сбалансированы: открывающих скобок больше закрывающих.')
else if C = 0 then
WriteLn('В ведённом тексте скобок не обнаружено.')
else
WriteLn('Скобки сбалансированы.');
end.
Объяснение кода листинга программы
- Ввод текста с скобками в программу.
- Инициализация двух переменных: P и C.
- Переменная P используется для хранения количества открытых скобок, а переменная C - для подсчета общего количества скобок в тексте.
- Проверка каждого символа входной строки.
- Если символ является открывающей скобкой, то увеличиваются значения обеих переменных P и C.
- Если символ является закрывающей скобкой, то значение переменной P уменьшается на 1, а значение переменной C увеличивается на 1.
- Если значение переменной P становится отрицательным, то это означает, что закрывающих скобок больше, чем открывающих, и программа выводит соответствующее сообщение об ошибке.
- Если значение переменной P остается положительным, то после цикла проверяется значение переменной C.
- Если значение переменной C равно нулю, то это означает, что в введенном тексте скобок не обнаружено, и программа выводит соответствующее сообщение.
- Если значение переменной C больше нуля, то это означает, что скобки сбалансированы, и программа выводит соответствующее сообщение.