Найти самое короткое слово в предложении - C (СИ)
Формулировка задачи:
Самое короткое слово в предложении (Предложение - последовательность слов, разделенных пробелами. Конец предложения - точка.)(первое из самых коротких, если их несколько) разбить на два слова пополам. Если в этом слове нечётное кол-во символов, то последний символ слова удалить.
Решение задачи: «Найти самое короткое слово в предложении»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- char * shortest_word(char * str, const char * delim) {
- if ( str = strtok(str, delim) ) {
- char * next = shortest_word(NULL, delim);
- if ( ! next )
- return str;
- return ( strlen(str) > strlen(next) ) ? next : str;
- }
- return NULL;
- }
- #define DELIM " \t\n"
- int main(void) {
- char buf[BUFSIZ];
- while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
- printf("First shortest word: %s\n", shortest_word(buf, DELIM));
- return 0;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с памятью и строками.
- Определяется функция
shortest_word
, которая принимает указатель на строку и указатель на разделитель в качестве аргументов. - Внутри функции происходит проверка наличия строки, которую можно разделить. Если строка есть, то вызывается рекурсивно функция
shortest_word
с аргументомNULL
и разделителем. - Результатом работы функции будет либо самое короткое слово, либо исходная строка, если самое короткое слово отсутствует.
- В функции
main
создается буфер для считывания строки с помощьюfgets
. - В цикле запрашивается ввод строки до тех пор, пока она не будет пустой.
- Внутри цикла вызывается функция
shortest_word
для получения самого короткого слова в строке и выводится на экран. - В конце программы возвращается значение
0
, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д