Удалить символы, что находяться в скобках - C (СИ)

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

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

Задаеться строка...ну вы поняли

Решение задачи: «Удалить символы, что находяться в скобках»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int main() {
 
    char text[256];
    int brackets = 0;   // Счётчик открывающихся скобок
    unsigned begin = 0; // Позиция первой открывающийся скобки
    unsigned i = 0;
 
    fgets(text, sizeof(text), stdin);
 
    // Перебираем все символы строки
    while (i < strlen(text)) {
        switch (text[i]) {
            case '(':
                // В случае если встретили открывающуюся скобку
                // и она является первой, то мы запоминаем её позицию
                // Кроме этого постоянно инкрементируем счётчик
                // открывающихся скобок
                if (++brackets == 1) {
                    begin = i;
                }
                break;
 
            case ')':
                // В случае если встречаем закрывающую скобку
                // и она относится именно к первой открывающийся, то
                // мы перемещаем всё что за закрывающейся скобкой на
                // позицию первой открывающейся
                if ((brackets > 0) && (--brackets == 0)) {
                    memmove(&text[begin], &text[i + 1], strlen(&text[i]));
                    i = begin - 1;
                }
                break;
        }
        ++i;
    }
 
    printf("%s", text);
 
    return 0;
}

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

  1. В начале кода объявляются три переменные: text, brackets и begin.
  2. Переменная text является массивом символов, в который будет считываться строка.
  3. Переменная brackets используется как счётчик открывающих скобок.
  4. Переменная begin хранит позицию первой открывающей скобки.
  5. Затем считывается строка с помощью функции fgets.
  6. Далее в цикле while происходит перебор всех символов строки.
  7. В случае если встречается символ '(', то выполняется проверка: если это первая открывающая скобка, то запоминается её позиция и увеличивается счётчик.
  8. В случае если встречается символ ')', то выполняется проверка: если это закрывающая скобка, относящаяся к первой открывающей скобке, то все символы, находящиеся между ней и первой открывающей скобкой, перемещаются в начало строки, после чего счётчик закрывающих скобок уменьшается на единицу.
  9. В конце выводится на экран полученная строка.
  10. В конце кода возвращается 0, что означает успешный конец работы программы.

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


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

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

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