Описать рекурсивную функцию skv, которая подсчитывает количество квадратных скобок в тексте - C (СИ)

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

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

Описать рекурсивную функцию skv, которая подсчитывает количество квадратных скобок (открывающих и закрывающих) в тексте. Текст завершается точкой или вопросительным знаком.

Решение задачи: «Описать рекурсивную функцию skv, которая подсчитывает количество квадратных скобок в тексте»

textual
Листинг программы
#include <ctype.h>
#include <stdio.h>
 
enum { BUFFER_SIZE = 100 };
 
int skv(const char* text) {
    if (*text == '.' || *text == '?')
        return 0;
    if (isdigit(*text))
        return -1;
    if (*text == '[' || *text == ']') {
        int i = skv(text + 1);
        if (i == -1)
            return -1;
        return i + 1;
    }
    return skv(text + 1);
}
 
int main() {
    char s[BUFFER_SIZE];
    fgets(s, BUFFER_SIZE, stdin);
    printf("%d", skv(s));
}

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

  1. Подключение необходимых библиотек: и .
  2. Объявление константы BUFFER_SIZE равной 100.
  3. Рекурсивная функция skv, которая принимает на вход указатель на строку text.
  4. Если символ в строке равен точке или вопросительному знаку, то функция возвращает 0.
  5. Если символ в строке является цифрой, то функция возвращает -1.
  6. Если символ в строке равен квадратной скобке или круглой скобке, то функция вызывает саму себя, передавая в качестве аргумента текст, смещенный на единицу вперед, и сохраняет результат в переменную i.
  7. Если функция вызвала саму себя и результат вызова функции равен -1, то текущая функция возвращает -1.
  8. Если функция вызвала саму себя и результат вызова функции больше или равен 0, то текущая функция возвращает результат вызова функции плюс единицу.
  9. Если символ в строке не является квадратной скобкой или круглой скобкой, то функция вызывает саму себя, передавая в качестве аргумента текст, смещенный на единицу вперед.
  10. В функции main происходит считывание строки с помощью fgets в буфер s.
  11. Вывод на экран количества квадратных скобок в считанной строке с помощью функции printf.

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


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

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

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