Проанализировать некоторое символьное выражение a$ с входящими в него скобками - QBasic
Формулировка задачи:
Нужно решить задачку, помогите, кто чем может).
Проанализировать некоторое символьное выражение a$ с входящими в него скобками (типа: "(",")","[","]","{","} на правильность расстановки скобок ( возможно вложенных). Вывести ответ в форме: "верно/неверно". Исходная информация ( символьные выражения a$) вводятся с клавиатуры.
Решение задачи: «Проанализировать некоторое символьное выражение a$ с входящими в него скобками»
textual
Листинг программы
DECLARE FUNCTION Fun% (S AS STRING) DIM S AS STRING CLS INPUT S R = Fun(S) CLS PRINT S IF R > 0 THEN LOCATE 2, R: PRINT "^" ELSE LOCATE 2, 1: PRINT "OK" END IF FUNCTION Fun% (S AS STRING) DIM I AS INTEGER, J AS INTEGER, R AS INTEGER, K AS INTEGER FOR I = 1 TO LEN(S) SELECT CASE MID$(S, I, 1) CASE "(" K = 1 FOR J = I + 1 TO LEN(S) IF MID$(S, J, 1) = "(" THEN K = K + 1 END IF IF MID$(S, J, 1) = ")" THEN K = K - 1 END IF IF K = 0 THEN R = Fun(MID$(S, I + 1, J - I - 1)) IF R > 0 THEN R = R + I END IF I = J + 1 EXIT FOR END IF NEXT J IF K > 0 THEN R = I END IF CASE ")" R = I CASE "[" K = 1 FOR J = I + 1 TO LEN(S) IF MID$(S, J, 1) = "[" THEN K = K + 1 END IF IF MID$(S, J, 1) = "]" THEN K = K - 1 END IF IF K = 0 THEN R = Fun(MID$(S, I + 1, J - I - 1)) IF R > 0 THEN R = R + I END IF I = J + 1 EXIT FOR END IF NEXT J IF K > 0 THEN R = I END IF CASE "]" R = I CASE "{" K = 1 FOR J = I + 1 TO LEN(S) IF MID$(S, J, 1) = "{" THEN K = K + 1 END IF IF MID$(S, J, 1) = "}" THEN K = K - 1 END IF IF K = 0 THEN R = Fun(MID$(S, I + 1, J - I - 1)) IF R > 0 THEN R = R + I END IF I = J + 1 EXIT FOR END IF NEXT J IF K > 0 THEN R = I END IF CASE "}" R = I END SELECT IF R > 0 THEN EXIT FOR NEXT I Fun = R END FUNCTION
Объяснение кода листинга программы
Этот код на языке QBasic анализирует символьное выражение, представленное в переменной S. Он ищет определенные символы и подсчитывает количество скобок (), [], {}), встречающихся в выражении. Вот список действий, которые выполняет этот код:
- Входные данные (символьное выражение) хранятся в переменной S.
- Функция Fun% принимает символьное выражение в качестве входного параметра и возвращает позицию первого открывающего скобка в выражении. Если в выражении нет скобок, функция возвращает 0.
- В основной программе мы сначала вводим символьное выражение, затем вызываем функцию Fun%, чтобы найти позицию первого открывающего скобка.
- Затем мы выводим символьное выражение и, если найдена открывающая скобка, выводим
^
в позицию, соответствующую этой скобке. В противном случае выводимOK
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д