Из заданной строки символов удалить слова, длина которых меньше указанной пользователем - C (СИ)
Формулировка задачи:
Из заданной строки символов удалить слова, длина которых меньше указанной пользователем
Помогите написать цикл
int n, i=1, j=0, k=0;
char str [80];
puts("Input string:");
gets(str);
puts(str);
puts("");
cout<<"dlina="; cin>>n;
k=strlen (str);
printf("\nLength of string %d \n",k);
while (i<k)
{ if (str[i]!= ' ' ) {i++; j++;}
else {
if (j<n) {
for(int b=i-j; b<k-j; b++)
str[b]=str[b+1];
str[k-j+1]='\0';
k=strlen(str);
j=0;
}
else {i++; j=0;}
}
}
puts(str);
puts("");
system("pause");
return 0;
}Решение задачи: «Из заданной строки символов удалить слова, длина которых меньше указанной пользователем»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main()
{
int n, i;
char str [80];
char rez[80]={'\0'};
char *tmp;
puts("Input string:");
gets(str);
puts(str);
puts("");
puts("dlina=");
scanf("%d",&n);
printf("\nLength of string %d \n",strlen (str));
tmp = strtok(str, " ");
for (i = 0; tmp != '\0'; i++)
{
if(strlen(tmp)>n)
{
strcat(rez, tmp);
strcat(rez," ");
}
tmp = strtok(NULL, " ");
}
puts(rez);
puts("");
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Ввод строки с помощью функции gets().
- Вывод введённой строки с помощью функции puts().
- Ввод длины слова, которое необходимо удалить с помощью функции scanf().
- Вывод длины введённой строки с помощью функции printf().
- Выделение первого слова в строке с помощью функции strtok().
- Итерация по всем словам в строке с помощью цикла for и функции strtok().
- Проверка длины текущего слова с помощью условия if.
- Если длина слова больше или равна указанной пользователем длине, то добавление этого слова в результирующую строку с помощью функции strcat().
- Добавление пробела после каждого слова в результирующую строку.
- Вывод результирующей строки с помощью функции puts().
- Возврат 0, чтобы указать, что программа успешно завершилась.