Преобразование текста: удалить все символы "*" и повторить все остальные дважды - C (СИ)

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

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

Дан текст. Преобразовать его таким образом, чтобы все символы "*" были удалены, а все символы, отличные от "*" были повторены дважды. Нужен самый простой код, без функций и прочего

Решение задачи: «Преобразование текста: удалить все символы "*" и повторить все остальные дважды»

textual
Листинг программы
#include <stdio.h>
#define N 256
#define DELIM "., ?;!"
 
char s[N] = "* * hdhhd nnn ghhh*nnc **** fhhh*";
char ss[N*2];
int main(void)
{
    char *p=s, *pp=ss;
    while(*p)
    {
        if(*p=='*')
        {
            ++p; 
            continue;
        }
        else
        {
            *pp++ = *p;
            *pp++ = *p;
            ++p; 
        }
    }
    *pp='\0';
    puts(ss);
    return 0;
}

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

  1. Подключение необходимых библиотек: iostream.h и string.h
  2. Объявление массива s, который содержит исходную строку.
  3. Объявление массива ss, который будет содержать результат обработки строки.
  4. Инициализация указателей p и pp, которые будут использоваться для перебора символов строк s и ss соответственно.
  5. В цикле while происходит перебор всех символов строки s.
  6. Если текущий символ равен *, то он пропускается (continue), иначе происходит следующее:
  7. Два раза повторяется добавление текущего символа в строку ss (указатель pp сначала увеличивается на 1, затем на 2).
  8. Указатель p увеличивается на 1 после каждой итерации внутреннего цикла.
  9. После завершения цикла, в конце строки ss добавляется символ '\0'.
  10. Результат выводится на экран с помощью функции puts.
  11. Программа возвращает 0, что означает успешное завершение.

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


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

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

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