Вставить 3 звездочки после каждой цифры в строке - C (СИ)

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

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

Условие задачи: вводить строки, завершение ввода - строка end. Затем в строках добавить *** после каждой цифры и в конце добавить текст "stars were added". Исходные и переделанные строки вывести таблицей. Я набросал такой код, но тут даже не работает остановка ввода после end. Массив str_chg - для обработанных строк.
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <string.h>
  4. #define max_message 100
  5. #define max_length 100
  6. int read_line (char str[], int n);
  7. int main()
  8. {
  9. char str[max_message][max_length+1], str_chg[max_message][max_length+1];
  10. char *result;
  11. int i=0, j, k=0, num_string=0;
  12. setlocale(LC_CTYPE, "rus");
  13. printf("Вводите строки (не более 100 символов, end - завершение ввода)\n");
  14. setlocale(LC_ALL, ".866");
  15. for (;;){
  16. do
  17. {
  18. gets (str[i]);
  19. i++;
  20. result=strstr(str[i], "end");
  21. }
  22. while (result==NULL);
  23. }
  24. for (j=0; j<i; j++)
  25. printf("%-33s\n", str[j]);
  26. return 0;
  27. }

Решение задачи: «Вставить 3 звездочки после каждой цифры в строке»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. char* func(char text[]) {
  6.     char* p = text;
  7.     unsigned cnt = 0;
  8.  
  9.     for (; *p; ++p) {
  10.         if (isdigit(*p)) {
  11.             cnt++;
  12.         }
  13.     }
  14.     strcpy(p + (cnt * 3), "stars were added");
  15.  
  16.     for (--p; cnt; --p) {
  17.         if (isdigit(*p)) {
  18.             strncpy(p + (--cnt * 3) + 1, "***", 3);
  19.         }
  20.  
  21.         *(p + (cnt * 3)) = *p;
  22.     }
  23.  
  24.     return text;
  25. }
  26.  
  27. int main() {
  28.     char text[256] = "1+2=3";
  29.  
  30.     printf("%s\n", text);
  31.     printf("%s\n", func(text));
  32.  
  33.     return 0;
  34. }

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

В данном коде реализована функция, которая добавляет 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы