Вставить 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 звездочки после каждой цифры в строке.

  1. В начале кода определяются необходимые заголовочные файлы и прототип функции.
  2. Внутри функции первым делом инициализируется указатель p на первый символ входной строки и переменная cnt равная 0. Переменная cnt будет использоваться для подсчета количества цифр в строке.
  3. Далее в цикле for происходит проход по каждому символу входной строки. Если текущий символ является цифрой, то увеличивается значение переменной cnt.
  4. После завершения цикла в памяти выделяется новая строка, в которую добавляются звездочки после каждой цифры. Строка p + (cnt * 3) указывает на позицию, с которой начинается добавление звездочек.
  5. Затем в цикле for (счетчик cnt уменьшается на единицу на каждой итерации) происходит проход по каждому символу входной строки. Если текущий символ является цифрой, то добавляются 3 звездочки после него.
  6. После завершения цикла возвращается исходная строка.
  7. В функции main создается тестовая строка 1+2=3.
  8. Выводится исходная строка.
  9. Вызывается функция func, в которую передается тестовая строка.
  10. Выводится результат работы функции func.
  11. Программа завершается.

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


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

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

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