Найти количество слов, начинающихся с заданного символа, и заменить эти слова их порядковым номером в строке, заключенным в фигурные скобки - 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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Устанавливается кодировка консоли как CP-1251
- Пользователю предлагается ввести строку и символ для поиска
- Вводится строка и сохраняется в массив str
- Вводится символ для поиска и сохраняется в массив ch
- Создается пустой массив result для хранения результата
- Устанавливается начальный указатель на начало массива result
- Инициализируется переменная count для подсчета количества найденных слов
- Инициализируется переменная i для отслеживания порядка найденных слов
- Устанавливается начальный указатель на первое слово в строке
- В цикле while происходит поиск слов, начинающихся с заданного символа
- Если слово не начинается с заданного символа, то оно добавляется в результирующий массив
- Если слово начинается с заданного символа, то увеличивается значение i и добавляется в результирующий массив
- После каждого слова выполняется пустая операция для перехода к следующему слову
- В конце цикла выводится количество найденных слов
- Выводится результирующий массив
- Ожидается нажатие клавиши для завершения программы
- Возвращается 0, что означает успешное завершение программы