Найти самое короткое слово в предложении - 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
, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д