Преобразовать текст, удалив все ‘*’ и повторив дважды каждый символ, отличный от ‘*’ - C (СИ) (79029)
Формулировка задачи:
всем привет.
Дано такое задание..
Ввести массив строк символов (текст), которые могут содержать символы ‘*’. Преобразовать текст, удалив все ‘*’ и повторив дважды каждый символ, отличный от ‘*’.
пользователь должен символы вводить с клавиатуры
все нужно реализовать с помощью функций,
все надо написать в Си а не в си++
как все написать и сделать задание не знаю, помогите пож-та, заранее спасибо.
Решение задачи: «Преобразовать текст, удалив все ‘*’ и повторив дважды каждый символ, отличный от ‘*’»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define SYMBOL '*' int matches_count(const char * s, char ch){ int cnt; char * p; for ( cnt = 0, p = strchr(s, ch); p; ++cnt, p = strchr(++p, ch) ) ; return cnt; } int main(void){ char buf[BUFSIZ], * p; int cnt, i; printf("String: "); scanf("%[^\n]", buf); if ( ! ( cnt = matches_count(buf, SYMBOL) ) ) printf("%s", buf); else for ( p = buf; *p; ++p ) if ( *p != SYMBOL ) for ( i = 0; i < cnt + 1; ++i ) printf("%c", *p); printf("\n"); return 0; }
Объяснение кода листинга программы
- Удаление всех символов '*' из текста.
- Повторение каждого символа, отличного от '*', два раза.
- Входные данные: строка, содержащая символы, включая '*'.
- Выходные данные: преобразованная строка, в которой все символы '' удалены, а каждый символ, отличный от '', повторяется два раза.
- В функции matches_count подсчитывается количество вхождений символа 'ch' в строке 's'.
- В функции main происходит следующее: a. Ввод строки с помощью scanf. b. Если в строке нет символа '', то выводится исходная строка. c. Если в строке есть символ '', то происходит следующее: i. Перебираются все символы в строке. ii. Если символ не равен '*', то он выводится дважды. iii. Выводится преобразованная строка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д