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