Найти в строке и удалить из нее последовательности повторяющихся символов - C (СИ)

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

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

Найти в строке и удалить из нее последовательности повторяющихся символов (например, "abcxxxxxacbyyyyyyyyyyyyyyyz" - "abcacbz")

Решение задачи: «Найти в строке и удалить из нее последовательности повторяющихся символов»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
void del(char* );
int main()
{
  char str[BUFSIZ];
  puts("Input line:");
  fgets(str, BUFSIZ, stdin);
  del(str);
  puts(str);
  return 0;
}
void del(char* p)
{
    char *a = p, *b = p + 1;
    while(*b){
        while(*b && *b++ != *a)
            *p++ = *a++;
        while(*b && *b++ == *a);
        a = b - 1;
    }
    *p = '\0';
}

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

В этом коде реализована функция удаления повторяющихся символов из строки. Список действий:

  1. Ввод строки с помощью функции fgets в буфер str, размер которого определяется макросом BUFSIZ.
  2. Вывод строки на экран.
  3. Вызов функции del с передачей в неё указателя на начало строки (str).
  4. В функции del создаются два указателя: a указывает на текущий символ, b- на следующий.
  5. В цикле while считывается текущий символ и проверяется, совпадает ли он с предыдущим. Если да, то он пропускается, если нет- копируется в выходную строку.
  6. После окончания цикла, последний символ добавляется в выходную строку.
  7. Выходная строка выводится на экран.
  8. Возвращается 0, заканчивая работу функции main.

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


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

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

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