Написать начальный код в Pascal-е.Решить задачку по обработке строковых данных с использованием
Написать начальный код в Pascal-е.
Решить задачку по обработке строковых данных с внедрением подпрограмм:
В строке, посреди символов могут встречаться открывающие и покрывающие скобки. Проверить с помощью подпрограммы равенство числа раскрывающихся скобок числу закрывающихся.
2 ответа
Илья Тютченко
Есть простой метод подсчета парности скобок. Инициализируем счетчик нулем, а потом читаем строчку. Если встречается открывающая скобка, в счетчик посылается +1, если закрывающая, то -1. После просмотра всей строчки нулевое значение счетчика скажет нам о равенстве скобок, а ненулевое покажет количество излишних скобок. Каких именно - покажет символ.
Попутно замечу, что сходственные подсчеты не гарантирует проверки синтаксической корректности расстановки скобок, например, выражение )a+b( синтаксически ошибочно, но в нем "правильное" количество скобок.
var
i,k:integer;
s:string;
begin
Write('Введите строчку: '); Readln(s);
k:=0;
for i:=1 to Length(s) do
case s[i] of
'(':Inc(k);
')':Dec(k)
end;
if k=0 then Writeln('Скобки парные')
else
begin
Write('Найдено непарных ');
if kgt;0 then Write('раскрывающих') else Write('закрывающих');
Writeln(' скобок: ',абс(k))
end
end.
Тестовое решение:
Введите строку: (3*k+1/(c-5)*a;
Найдено непарных раскрывающих скобок: 1
Попутно замечу, что сходственные подсчеты не гарантирует проверки синтаксической корректности расстановки скобок, например, выражение )a+b( синтаксически ошибочно, но в нем "правильное" количество скобок.
var
i,k:integer;
s:string;
begin
Write('Введите строчку: '); Readln(s);
k:=0;
for i:=1 to Length(s) do
case s[i] of
'(':Inc(k);
')':Dec(k)
end;
if k=0 then Writeln('Скобки парные')
else
begin
Write('Найдено непарных ');
if kgt;0 then Write('раскрывающих') else Write('закрывающих');
Writeln(' скобок: ',абс(k))
end
end.
Тестовое решение:
Введите строку: (3*k+1/(c-5)*a;
Найдено непарных раскрывающих скобок: 1
Скребло Полина
Var
str:string;
i, n9, n0:integer;
begin
readln(str);
for i:=1 to Length(str) do
if str[i] = '(' then
n9 := n9 + 1
else
if str[i] = ')' then
n0 := n0 + 1;
if n9 = n0 then
writeln('Число открывающихся скобок одинаково числу закрывающихся')
else
writeln('Число раскрывающихся скобок не одинаково числу закрывающихся');
end.
str:string;
i, n9, n0:integer;
begin
readln(str);
for i:=1 to Length(str) do
if str[i] = '(' then
n9 := n9 + 1
else
if str[i] = ')' then
n0 := n0 + 1;
if n9 = n0 then
writeln('Число открывающихся скобок одинаково числу закрывающихся')
else
writeln('Число раскрывающихся скобок не одинаково числу закрывающихся');
end.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Составить монолог от имени дневника двоечника 7-10 предложений
Русский язык.
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо
Разные вопросы.
Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных
Разные вопросы.
Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей
Математика.
Определить предложения какие они по цели высказывания и по интонации
Русский язык.
"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.
Русский язык.
на одной грядке коротышки посадили 3 ряда морковок по 8 штук
Разные вопросы.
эссе на тему какое образование дается в каждой семье
Қазақ тiлi.
Put the verb in brackets into the Present Indefinite.
1The Volga ,
Английский язык.
Облако тегов