Найти количество слов, начинающихся с заданного символа, и заменить эти слова их порядковым номером в строке, заключенным в фигурные скобки - C (СИ)

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

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

условие Дана строка. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Найти количество слов, начинающихся с заданного символа, и заменить эти слова их порядковым номером в строке, заключенным в фигурные скобки. препод придрался к тому что я вывожу по отдельности слова и символы.на вывод нужно подать откорректированную старую строку либо записать слова в новую.Буду признателен за помощь
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
 
int main ()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);

  printf ("введи строку :\n");
  char str[255];
  gets(str);
  printf ("введи символ:\n");
  char ch;
  scanf ("%c",&ch);
 
  char * pch;
  pch = strtok (str," ");
 
  int count=0;
  int i=0;
 
  while (pch != NULL)
  {
          if (pch[0]!=ch)
          {
                printf("%s ",pch);
                i++;
          }
          
          else
          {
                i++;
                printf ("{%d} ",i);
          } 
       
    pch = strtok (NULL, " ");
        count++;
  }
        printf ("\n всех слов %d ",count);
        getch();
        return 0;
        
}

Решение задачи: «Найти количество слов, начинающихся с заданного символа, и заменить эти слова их порядковым номером в строке, заключенным в фигурные скобки»

textual
Листинг программы
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
 
int main()
{
   SetConsoleCP(1251);
   SetConsoleOutputCP(1251);
 
   printf("введи строку : ");
   char str[255];
   gets(str);
   printf("введи символ: ");
   char ch;
   scanf("%c", &ch);
 
   char result[sizeof(str)] = { 0 };
   char* presult = result;
 
   int count = 0;
   int i = 0;
 
   char* pch;
   pch = strtok(str, " ");
 
   while (pch != NULL)
   {
      if (pch[0] != ch)
      {
         sprintf(presult, "%s ", pch);
         i++;
      }
 
      else
      {
         i++;
         sprintf(presult, "{%d} ", i);
      }
 
      for (; *presult; ++presult) { ; }
 
      pch = strtok(NULL, " ");
      count++;
   }
 
   printf("%s\nвсех слов %d ", result, count);
   getch();
 
   return 0;
}

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

  1. Включаются необходимые заголовочные файлы
  2. Устанавливается кодировка консоли как CP-1251
  3. Пользователю предлагается ввести строку и символ для поиска
  4. Вводится строка и сохраняется в массив str
  5. Вводится символ для поиска и сохраняется в массив ch
  6. Создается пустой массив result для хранения результата
  7. Устанавливается начальный указатель на начало массива result
  8. Инициализируется переменная count для подсчета количества найденных слов
  9. Инициализируется переменная i для отслеживания порядка найденных слов
  10. Устанавливается начальный указатель на первое слово в строке
  11. В цикле while происходит поиск слов, начинающихся с заданного символа
  12. Если слово не начинается с заданного символа, то оно добавляется в результирующий массив
  13. Если слово начинается с заданного символа, то увеличивается значение i и добавляется в результирующий массив
  14. После каждого слова выполняется пустая операция для перехода к следующему слову
  15. В конце цикла выводится количество найденных слов
  16. Выводится результирующий массив
  17. Ожидается нажатие клавиши для завершения программы
  18. Возвращается 0, что означает успешное завершение программы

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


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

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

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