Вывести самое короткое слово и его длину - C (СИ) (77864)

Узнай цену своей работы

Формулировка задачи:

г) Вывести самое коpоткое слово и его длину. на си
#include <stdio.h>
    #define  DLSL  80    /* макс. длина слова */
 
    main()
    {   char s;                /* тек. символ */
         char sl[DLSL];  /* тек. слово  */
         int i,j;                 /* индексы тек. символа в слове */

        int psl=1;            /* признак, что слово длиной до 5 симв. первое */
        printf ("\n\nВведите строку символов\n");
        s=getchar();
        while (s!='\n')
          {
            if (s==' ')  s=getchar();
            else
             { i=0;
                do
                  { sl[i++]=s;
                     s=getchar();
                  }
                while ((s!=' ') && (s!='\n'));
                 if (i<5)
                    { if (psl)  /* если слово первое */
                        { printf ("Слова длиной до 5 символов:\n");
                           psl=0;
                        }
                       for (j=0; j<i; j++)
                           putchar(sl[j]);
                       putchar(' ');
                     }
             }
          }
        if (psl)  printf ("Слов длиной до 5 символов нет");
    }

Решение задачи: «Вывести самое короткое слово и его длину»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define DELIM " \t\n"
 
int main ()
{
   char s[] = "Hello world";
   char *p;
   char *t;
   if ( *s )
   {
      for ( p = strtok (s, DELIM), t = strdup (p) ; p ; p = strtok (NULL, DELIM) )
         if ( strlen (p) < strlen (t) )
         {
            free (t);
            t = strdup (p);
         }
      
      printf (" Min world : %s \n Len = %d \n", t, strlen (t) );
      free (t);
   }
   else printf (" Min = 0\n");
   return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Объявлены три переменные: s, p, t.
  2. Переменная s содержит строку Hello world.
  3. В цикле for начинается обработка строки.
  4. Первая итерация: a) p становится равным первому слову в строке Hello world (после разделения на слова). b) t становится равным копии слова, найденного на текущей итерации.
  5. Вторая и последующие итерации: a) Если текущее слово короче, чем предыдущее, то: i) t освобождается от выделенной памяти. ii) t становится равным копии текущего слова. b) Если текущее слово длиннее или равно предыдущему, то ничего не происходит.
  6. Выводится самое короткое слово (t) и его длина (strlen(t)).
  7. t освобождается от выделенной памяти.
  8. Если строка пустая, то выводится Min = 0.
  9. Возвращается 0, что означает успешное завершение программы.

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


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

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

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