Найти и вывести все длинные слова предложения - C (СИ)

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

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

У меня выводится только одно длинное слово. Как быть если их несколько.
char s[100];
char *ptr,*p;
int max=0,smax=0;
 
puts("Enter a string:" );
gets(s);
 
ptr=strtok(s," ");
 while (ptr)
     {
      smax=strlen(ptr);
      if(smax>max)
          {
           max=smax;
           p=ptr;
          }
      ptr=strtok(NULL," "); 
     }
printf("%s",p);

Решение задачи: «Найти и вывести все длинные слова предложения»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
   char s[100];
   char* p[100];
   char** cursor = p;
 
   char* ptr;
   int max = 0, smax = 0;
 
   printf("Enter a string: ");
   gets(s);
 
   ptr = strtok(s, " ");
   while (ptr)
   {
      smax = strlen(ptr);
      if (smax > max)
      {
         max = smax;
         cursor = p;
      }
      if (smax == max)
      {
         *cursor = ptr;
         *(++cursor) = NULL;
      }
      ptr = strtok(NULL, " ");
   }
 
   for (cursor = p; *cursor != NULL; ++cursor)
   {
      printf("%s\n", *cursor);
   }
 
   system("pause");
 
   return 0;
}

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

В этом коде:

  1. Объявлены две строки: s для ввода строки и p для хранения подстрок.
  2. Указатель cursor используется для перебора массива p.
  3. ptr используется как рабочий указатель для поиска подстрок.
  4. Функция strtok используется для разделения входной строки на подстроки по пробелам.
  5. max используется для отслеживания наибольшей длины подстроки, а smax для отслеживания текущей длины подстроки.
  6. Если длина текущей подстроки больше максимальной, обновляется максимальная длина и указатель cursor сбрасывается в начало массива p.
  7. Если длина текущей подстроки равна максимальной, подстрока добавляется в массив p и указатель cursor перемещается к следующему элементу массива.
  8. После завершения цикла, все подстроки выводятся на экран.
  9. В конце программы запрашивается ввод, чтобы программа не закрылась сразу.
  10. Программа возвращает 0, что означает успешное завершение.

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


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

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

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