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