Вставить 3 звездочки после каждой цифры в строке - C (СИ)
Формулировка задачи:
Условие задачи: вводить строки, завершение ввода - строка end. Затем в строках добавить *** после каждой цифры и в конце добавить текст "stars were added". Исходные и переделанные строки вывести таблицей.
Я набросал такой код, но тут даже не работает остановка ввода после end. Массив str_chg - для обработанных строк.
Листинг программы
- #include <stdio.h>
- #include <locale.h>
- #include <string.h>
- #define max_message 100
- #define max_length 100
- int read_line (char str[], int n);
- int main()
- {
- char str[max_message][max_length+1], str_chg[max_message][max_length+1];
- char *result;
- int i=0, j, k=0, num_string=0;
- setlocale(LC_CTYPE, "rus");
- printf("Вводите строки (не более 100 символов, end - завершение ввода)\n");
- setlocale(LC_ALL, ".866");
- for (;;){
- do
- {
- gets (str[i]);
- i++;
- result=strstr(str[i], "end");
- }
- while (result==NULL);
- }
- for (j=0; j<i; j++)
- printf("%-33s\n", str[j]);
- return 0;
- }
Решение задачи: «Вставить 3 звездочки после каждой цифры в строке»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- char* func(char text[]) {
- char* p = text;
- unsigned cnt = 0;
- for (; *p; ++p) {
- if (isdigit(*p)) {
- cnt++;
- }
- }
- strcpy(p + (cnt * 3), "stars were added");
- for (--p; cnt; --p) {
- if (isdigit(*p)) {
- strncpy(p + (--cnt * 3) + 1, "***", 3);
- }
- *(p + (cnt * 3)) = *p;
- }
- return text;
- }
- int main() {
- char text[256] = "1+2=3";
- printf("%s\n", text);
- printf("%s\n", func(text));
- return 0;
- }
Объяснение кода листинга программы
В данном коде реализована функция, которая добавляет 3 звездочки после каждой цифры в строке.
- В начале кода определяются необходимые заголовочные файлы и прототип функции.
- Внутри функции первым делом инициализируется указатель
p
на первый символ входной строки и переменнаяcnt
равная 0. Переменнаяcnt
будет использоваться для подсчета количества цифр в строке. - Далее в цикле
for
происходит проход по каждому символу входной строки. Если текущий символ является цифрой, то увеличивается значение переменнойcnt
. - После завершения цикла в памяти выделяется новая строка, в которую добавляются звездочки после каждой цифры. Строка
p + (cnt * 3)
указывает на позицию, с которой начинается добавление звездочек. - Затем в цикле
for
(счетчикcnt
уменьшается на единицу на каждой итерации) происходит проход по каждому символу входной строки. Если текущий символ является цифрой, то добавляются 3 звездочки после него. - После завершения цикла возвращается исходная строка.
- В функции
main
создается тестовая строка1+2=3
. - Выводится исходная строка.
- Вызывается функция
func
, в которую передается тестовая строка. - Выводится результат работы функции
func
. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д