В строке, введенной с клавиатуры, определить самое длинное и самое короткое слово - 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 выполняется следующая задача:

  1. Ввод текста из клавиатуры в строку.
  2. Поиск самого длинного и самого короткого слова в этом тексте.
  3. Вывод результатов на экран. Список действий:
  4. Ввод текста из клавиатуры в строку. Для этого используется функция fgets(), которая считывает строку из стандартного ввода (клавиатуры). Текст сохраняется в массиве text размером 1024 символа.
  5. Поиск самого длинного и самого короткого слова. Для начала, мы инициализируем две указатели: begin указывает на текущий символ в тексте, а end указывает на последний символ в тексте. Затем, в цикле, мы проходим по всем символам в тексте. Внутри цикла, мы используем два вложенных цикла. Первый вложенный цикл ищет границу слова, начиная с текущего символа. Он продолжает работу до тех пор, пока не встретит символ, который является буквой или цифрой (это признак начала слова). Второй вложенный цикл ищет границу слова, начиная с текущего символа. Он продолжает работу до тех пор, пока не встретит символ, который не является буквой или цифрой (это признак конца слова). Когда мы находим слово, мы сравниваем его длину с длиной самого длинного и самого короткого слова, которые мы уже нашли. Если это новое самое длинное или самое короткое слово, мы обновляем соответствующие значения.
  6. Вывод результатов на экран. Если мы нашли самое длинное и самое короткое слово, мы выводим их на экран с помощью функции printf(). В конце программы мы используем system(pause), чтобы приостановить выполнение программы до тех пор, пока пользователь не нажмет любую клавишу. Это позволяет пользователю увидеть результаты, прежде чем программа завершится. Надеюсь, это объяснение помогло! Если у вас есть еще вопросы, не стесняйтесь задавать.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы