Top.Mail.Ru
Ответы

Помогите с задачей на СИ

Из многострочного текста ( char text[20][81]) выпишите слова, длины которых принадлежат диапазону [min, max]. Слово – это непрерывная последовательность букв и/или цифр. Разделителями слов могут быть следующие символы: ! ' (двойные кавычки) ; : ? -[пробел]. Исходный текст не модифицировать. Последовательности символов, не являющиеся словами (т. е. содержащие недопустимые символы), игнорировать.

Реализовать и использовать функцию поиска в строке слов заданной длины:

int selectWords( const char *str, int min, int max, char words[30][21]);

Входные данные:
str - исходная строка
min, max – диапазон длины слова
Выходные данные:
words – слова, которые имеют длину в диапазоне [min, max]
возвращаемое значение - кол-во найденных слов

Реализовать и использовать функцию, которая определяет границы слова, встречающегося после позиции start:

void findWord( const char *str, int start, int *begin, int *end);
Входные данные:
str - исходная строка
start – индекс, с которого начинается выделение слова
Выходные данные:
begin, end – индекс первой и последней букв выделенного слова; возвращается -1, если слово не найдено

Формат входных данных. [min] [max] [M] [1-я строка] [2-я строка] и т. д. M – кол-во строк в тексте, целое число в диапазоне [1, 20]. min и max - целые числа в диапазоне [1, 20].
Формат выходных данных. [1-е слово] [перевод строки] [2-е слово] и т. д.; если искомых слов нет, то напечатайте сообщение «no solution»

По дате
По рейтингу
Аватар пользователя
Новичок
5лет

Вероятно, ответ уйдёт в подпространство, но советую познакомиться с "регулярными выражениями", начните с https://habr.com/ru/sandbox/33220/.
Сразу весь класс подобных задач на любом ЯП сможете оконтурить.