В строке, введенной с клавиатуры, определить самое длинное и самое короткое слово - C (СИ)
Формулировка задачи:
Помогите с задачей,пожалуйста)
Решение задачи: «В строке, введенной с клавиатуры, определить самое длинное и самое короткое слово»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> int main() { printf("input text: "); char text[1024]; fgets(text, sizeof(text)-1, stdin); char* pmax = NULL; size_t pmaxlen = 0; char* pmin = NULL; size_t pminlen = 0; char* begin = text; char* end = text; while (*end) { for (begin = end; *begin && !isalnum(*begin); ++begin) { ; } for (end = begin; *end && isalnum(*end); ++end) { ; } if (begin < end) { if ((pmax == NULL) || (pmaxlen < end - begin)) { pmax = begin; pmaxlen = end - begin; } if ((pmin == NULL) || (pminlen > end - begin)) { pmin = begin; pminlen = end - begin; } } } if (pmax && pmin) { printf("\n"); printf("max = %.*s\n", pmaxlen, pmax); printf("min = %.*s\n", pminlen, pmin); } system("pause"); return 0; }
Объяснение кода листинга программы
В этом коде на языке C выполняется следующая задача:
- Ввод текста из клавиатуры в строку.
- Поиск самого длинного и самого короткого слова в этом тексте.
- Вывод результатов на экран. Список действий:
- Ввод текста из клавиатуры в строку.
Для этого используется функция
fgets()
, которая считывает строку из стандартного ввода (клавиатуры). Текст сохраняется в массивеtext
размером 1024 символа. - Поиск самого длинного и самого короткого слова.
Для начала, мы инициализируем две указатели:
begin
указывает на текущий символ в тексте, аend
указывает на последний символ в тексте. Затем, в цикле, мы проходим по всем символам в тексте. Внутри цикла, мы используем два вложенных цикла. Первый вложенный цикл ищет границу слова, начиная с текущего символа. Он продолжает работу до тех пор, пока не встретит символ, который является буквой или цифрой (это признак начала слова). Второй вложенный цикл ищет границу слова, начиная с текущего символа. Он продолжает работу до тех пор, пока не встретит символ, который не является буквой или цифрой (это признак конца слова). Когда мы находим слово, мы сравниваем его длину с длиной самого длинного и самого короткого слова, которые мы уже нашли. Если это новое самое длинное или самое короткое слово, мы обновляем соответствующие значения. - Вывод результатов на экран.
Если мы нашли самое длинное и самое короткое слово, мы выводим их на экран с помощью функции
printf()
. В конце программы мы используемsystem(
pause)
, чтобы приостановить выполнение программы до тех пор, пока пользователь не нажмет любую клавишу. Это позволяет пользователю увидеть результаты, прежде чем программа завершится. Надеюсь, это объяснение помогло! Если у вас есть еще вопросы, не стесняйтесь задавать.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д