
Вопрос задан 01.04.2021 в 02:12.
Предмет Информатика.
Спрашивает Балобан Саша.
На вход программе подаётся последовательность символов, заканчивающаяся точкой (точка – признак
конца и в последовательность не входит). Проверить, правильно ли в данной последовательности расставлены круглые скобки (то есть, справа от каждой открывающей есть соответствующая закрывающая, а слева от каждой закрывающей есть соответствующая открывающая).

Ответы на вопрос

Отвечает Alibaeva Zhanerke.
Var s:string; k,i:integer; b:boolean;
begin
writeln('s = ');
readln(s);
k:=0; i:=1;
b:=true;
while s[i]<>'.' do
begin
case s[i] of
'(' : k:=k+1;
')' : k:=k-1;
end;
if k<0 then b:=false;
i:=i+1;
end;
if b and (k=0) then writeln('Все ОК') else writeln('Есть ошибки');
end.
Пример:
s = ((a+b)/(2b-3a))(a/b).
Все ОК
begin
writeln('s = ');
readln(s);
k:=0; i:=1;
b:=true;
while s[i]<>'.' do
begin
case s[i] of
'(' : k:=k+1;
')' : k:=k-1;
end;
if k<0 then b:=false;
i:=i+1;
end;
if b and (k=0) then writeln('Все ОК') else writeln('Есть ошибки');
end.
Пример:
s = ((a+b)/(2b-3a))(a/b).
Все ОК



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Вы можете решить эту задачу, используя стек (stack) в программировании. Идея состоит в том, чтобы просматривать каждый символ в последовательности и выполнять следующие действия:
- Если символ является открывающей скобкой (круглой), помещаем его в стек.
- Если символ является закрывающей скобкой (круглой), проверяем, что стек не пустой.
- Если стек пуст, это означает, что закрывающая скобка не имеет соответствующей открывающей, и последовательность неправильна. Мы можем сразу же вернуть "Неправильно".
- Если стек не пустой, извлекаем верхний элемент стека и проверяем, соответствует ли он открывающей скобке. Если нет, возвращаем "Неправильно".
- Если мы достигли конца строки (точки) и стек пустой, это означает, что последовательность скобок правильная. Возвращаем "Правильно". В противном случае, возвращаем "Неправильно".
Вот пример реализации на языке Python:
pythondef check_brackets(sequence):
stack = []
for char in sequence:
if char == '(':
stack.append(char)
elif char == ')':
if not stack:
return "Неправильно"
if stack[-1] == '(':
stack.pop()
else:
return "Неправильно"
if not stack:
return "Правильно"
else:
return "Неправильно"
sequence = input("Введите последовательность скобок: ")
result = check_brackets(sequence)
print(result)
Вы можете запустить этот код, ввести вашу последовательность скобок, и программа сообщит вам, правильно ли расставлены скобки в данной последовательности.


Топ вопросов за вчера в категории Информатика

Информатика 47

Информатика 33

Информатика 67

Информатика 18

Информатика 25

Информатика 563

Информатика 16
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili