Найти самое короткое слово в строке - C (СИ) (69490)
Формулировка задачи:
Приветствую, ув. программисты, помогите пожалуйста с программкой. Задание: Разработать программу обработки строки символов в соответствии с заданным вариантом(Найти самое короткое слово). Считать, что строка оканчивается точкой, слова разделены пробелами. В программе предусмотреть ввод и вывод исходных данных и результатов
Решение задачи: «Найти самое короткое слово в строке»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> int main() { char str[100], word[20], mn[20], c; int i = 0, j = 0, flg = 0; printf("Enter string: "); i = 0; do { fflush(stdin); c = getchar(); str[i++] = c; } while (c != '\n'); str[i - 1] = '\0'; for (i = 0; i < strlen(str); i++) { while (i < strlen(str) && !isspace(str[i]) && isalnum(str[i])) { word[j++] = str[i++]; } if (j != 0) { word[j] = '\0'; if (!flg) { flg = !flg; strcpy(mn, word); } if (strlen(word) < strlen(mn)) { strcpy(mn, word); } j = 0; } } printf("The shortest word is '%s'\n", mn); return 0; }
Объяснение кода листинга программы
- Ввод строки с помощью функции
printf()
иgetchar()
. - Создание строки
str
для хранения введенной строки. - Создание строки
word
для хранения текущего слова. - Создание строки
mn
для хранения самого короткого слова. - Инициализация переменных
i
,j
иflg
со значениями 0. - Перебор всех символов в строке
str
. - Проверка каждого симвода на принадлежность к слову (не пробел и буква или цифра).
- Если текущий символ является началом нового слова, то добавляем его в строку
word
. - Если длина текущего слова
word
меньше длины самого короткого словаmn
, то обновляемmn
значениемword
. - После обработки всех символов, выводим самое короткое слово
mn
. - Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д