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