#include <stdio.h>
int main()
{
int N, control = 0;//N - длина слов,которую задаёт пользователь, контрол служебная переменная для выхода из цикла
char arr[1000];//массив
char a;//переменная для заполнения массива
int i = 0, j;//служебные переменные-счётчики
printf("Input a string:\n");
while ((a = getchar()) != '\n')// ввод массива. "До тех пор пока вводимы символ не равен '\n', заполняем массив"
{
arr[i] = a;
i++;
}
arr[i] = '\0';// '\0' обозначение конца строки
printf("Input a word size:\n");
scanf("%d", &N);// ввод длины слов
if (N < 0) {
printf("Error");
}
i = 0;//с помощбю i заполняли строку, текущее ее значение - длинна строки. Нужно пойти с начала, поэтому обнуляем ее
while (1)// бесконечный цикл, потому что мы не знаем заранее сколько раз нужно будет прогнать действия внутри него. Для выхода из него используется control.
{
int m = 0;// локальная(!) переменная для проверки длины ТЕКУЩЕГО слова в строке; обнуляем ее каждый раз перед считыванием слов.
while ((arr[i] >= 'A' && arr[i] <= 'Z') || (arr[i] >= 'a' && arr[i] <= 'z'))// цикл работает до тех пор, пока в строке идет буква. Если в строке будет символ, цикл остановится
{
//за слово мы считаем последовательность букв, поэтому пока буквы идут подряд мы запоминаем их длину в m!
i++;
m++;
}
if (m == N)// это условие запустится, если предыдущий цикл встретил НЕ букву(разделитель), и теперь мы сравниваем длину последовательности букв, с заданной длиной слова
{
// если они равны, то выводим это слово
for (j = i - m; j < i; j++)//длина слова m, мы находимся на i и i одновременно конец слова. Значит запускаем цикл от i - m до i
{
printf("%c", arr[j]);
}
printf(" ");//делаем разделение между выводимыми словами
}
while (!((arr[i] >= 'A' && arr[i] <= 'Z') || (arr[i] >= 'a' && arr[i] <= 'z')))//пропускаем все НЕ буквы после полученного слова
{
if (arr[i] == '\0')// если мы наткнулись на конец строки, то нужно заканчивать, та как слов больше нет. Изменяем переменную control,чтобы выйти из цикла.
{
control = 1;
break;
}
i++;
}
if (control == 1)//если control изменена - значит строка закончилась и тогда выходим из бесконечного цикла.
break;
}
return 0;
}
