Проанализировать некоторое символьное выражение a$ с входящими в него скобками - QBasic

Узнай цену своей работы

Формулировка задачи:

Нужно решить задачку, помогите, кто чем может). Проанализировать некоторое символьное выражение a$ с входящими в него скобками (типа: "(",")","[","]","{","} на правильность расстановки скобок ( возможно вложенных). Вывести ответ в форме: "верно/неверно". Исходная информация ( символьные выражения a$) вводятся с клавиатуры.

Решение задачи: «Проанализировать некоторое символьное выражение a$ с входящими в него скобками»

textual
Листинг программы
  1. DECLARE FUNCTION Fun% (S AS STRING)
  2. DIM S AS STRING
  3. CLS
  4. INPUT S
  5. R = Fun(S)
  6. CLS
  7. PRINT S
  8. IF R > 0 THEN
  9.     LOCATE 2, R: PRINT "^"
  10. ELSE
  11.     LOCATE 2, 1: PRINT "OK"
  12. END IF
  13.  
  14. FUNCTION Fun% (S AS STRING)
  15.     DIM I AS INTEGER, J AS INTEGER, R AS INTEGER, K AS INTEGER
  16.     FOR I = 1 TO LEN(S)
  17.         SELECT CASE MID$(S, I, 1)
  18.         CASE "("
  19.             K = 1
  20.             FOR J = I + 1 TO LEN(S)
  21.                 IF MID$(S, J, 1) = "(" THEN
  22.                     K = K + 1
  23.                 END IF
  24.                 IF MID$(S, J, 1) = ")" THEN
  25.                     K = K - 1
  26.                 END IF
  27.                 IF K = 0 THEN
  28.                     R = Fun(MID$(S, I + 1, J - I - 1))
  29.                     IF R > 0 THEN
  30.                         R = R + I
  31.                     END IF
  32.                     I = J + 1
  33.                     EXIT FOR
  34.                 END IF
  35.             NEXT J
  36.             IF K > 0 THEN
  37.                 R = I
  38.             END IF
  39.         CASE ")"
  40.             R = I
  41.         CASE "["
  42.             K = 1
  43.             FOR J = I + 1 TO LEN(S)
  44.                 IF MID$(S, J, 1) = "[" THEN
  45.                     K = K + 1
  46.                 END IF
  47.                 IF MID$(S, J, 1) = "]" THEN
  48.                     K = K - 1
  49.                 END IF
  50.                 IF K = 0 THEN
  51.                     R = Fun(MID$(S, I + 1, J - I - 1))
  52.                     IF R > 0 THEN
  53.                         R = R + I
  54.                     END IF
  55.                     I = J + 1
  56.                     EXIT FOR
  57.                 END IF
  58.             NEXT J
  59.             IF K > 0 THEN
  60.                 R = I
  61.             END IF
  62.         CASE "]"
  63.             R = I
  64.         CASE "{"
  65.             K = 1
  66.             FOR J = I + 1 TO LEN(S)
  67.                 IF MID$(S, J, 1) = "{" THEN
  68.                     K = K + 1
  69.                 END IF
  70.                 IF MID$(S, J, 1) = "}" THEN
  71.                     K = K - 1
  72.                 END IF
  73.                 IF K = 0 THEN
  74.                     R = Fun(MID$(S, I + 1, J - I - 1))
  75.                     IF R > 0 THEN
  76.                         R = R + I
  77.                     END IF
  78.                     I = J + 1
  79.                     EXIT FOR
  80.                 END IF
  81.             NEXT J
  82.             IF K > 0 THEN
  83.                 R = I
  84.             END IF
  85.         CASE "}"
  86.             R = I
  87.         END SELECT
  88.         IF R > 0 THEN EXIT FOR
  89.     NEXT I
  90.     Fun = R
  91. END FUNCTION

Объяснение кода листинга программы

Этот код на языке QBasic анализирует символьное выражение, представленное в переменной S. Он ищет определенные символы и подсчитывает количество скобок (), [], {}), встречающихся в выражении. Вот список действий, которые выполняет этот код:

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

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


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

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

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы