Проанализировать некоторое символьное выражение 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. Он ищет определенные символы и подсчитывает количество скобок (), [], {}), встречающихся в выражении. Вот список действий, которые выполняет этот код:

  1. Входные данные (символьное выражение) хранятся в переменной S.
  2. Функция Fun% принимает символьное выражение в качестве входного параметра и возвращает позицию первого открывающего скобка в выражении. Если в выражении нет скобок, функция возвращает 0.
  3. В основной программе мы сначала вводим символьное выражение, затем вызываем функцию Fun%, чтобы найти позицию первого открывающего скобка.
  4. Затем мы выводим символьное выражение и, если найдена открывающая скобка, выводим ^ в позицию, соответствующую этой скобке. В противном случае выводим OK.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы