Вывести на экран список слов с указанием их длины - C (СИ)

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

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

1. Задан текст, состоящий из отдельных слов. Длина текста - не более 80 символов. Исходный текст должен заканчиваться символом (’.’, ’!’, ’?’), слова разделены пробелами. Вывести на экран список слов с указанием их длины. Определить длину самого короткого и самого длинного слова. Вывести на экран эти слова с комментариями: самое длинное слово, самое короткое слово. Программа должна предусматривать: 1. Вывод на экран информации о программе, а также, о ее разработчике. 2. Ввод текста с клавиатуры. 3. Вывод результата обработки текстовой строки. 4. Выход из программы. Есть похожая программа. Кого заинтересует или захочет помочь я могу скинуть программу. Пишите: <cut>

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

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
#define MAX_TEXT_LENGTH 80
#define DELIMETERS " .,?!"
 
int main(void)
{
  char textString[MAX_TEXT_LENGTH + 1];
  char longestWord[MAX_TEXT_LENGTH + 1];
  char shortestWord[MAX_TEXT_LENGTH + 1];
 
  char* pch = NULL;
 
  char ch = 0;
 
  int canContinue = 0;
  int i = 0;
 
  do
  {
    printf("Enter text:\n");
 
    memset(textString, 0, sizeof(textString));
    memset(longestWord, 0, sizeof(longestWord));
    memset(shortestWord, 0, sizeof(shortestWord));
 
    if (fgets(textString, MAX_TEXT_LENGTH, stdin) != NULL)
    {
 
      if (textString[strlen(textString) - 1] == '\n')
          textString[strlen(textString) - 1] = '\0';
 
      i = 0;
 
      pch = strtok(textString, DELIMETERS);
      while (pch != NULL)
      {
        i++;
 
        printf("Word [%02d]: '%s'\n", i, pch);
 
        if (i == 1)
        {
          strcpy(longestWord, pch);
          strcpy(shortestWord, pch);
        }
 
        if (strlen(pch) > strlen(longestWord))
        {
          strcpy(longestWord, pch);
        }
 
        if (strlen(pch) < strlen(shortestWord))
        {
          strcpy(shortestWord, pch);
        }
 
        pch = strtok(NULL, DELIMETERS);
      }
 
      printf("Shortest word: '%s' (length = %lu).\n",
          shortestWord, strlen(shortestWord));
 
      printf("Longest word: '%s' (length = %lu).\n",
          longestWord, strlen(longestWord));
 
      do
      {
        printf("Continue (y/n)?\n");
 
        scanf(" %c", &ch);
 
        while ((i = getchar()) != '\n' && i != EOF);
 
        if (ch == 'y')
        {
          canContinue = 1;
        }
        else if (ch == 'n')
        {
          canContinue = 0;
        }
        else
        {
          printf("Input error!\n");
        }
      }
      while ((ch != 'y') && (ch != 'n'));      
    }
  }
  while (canContinue);
 
  printf("Developed by HighPredator!\n");
 
  getchar();
 
  return 0;
}

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

В этом коде на языке C реализован алгоритм, который позволяет пользователю ввести текст, а затем выводит список слов из этого текста вместе с их длиной. Список переменных:

  1. textString - строка, в которую пользователь вводит текст.
  2. longestWord - строка, в которую сохраняется самое длинное слово из введенного текста.
  3. shortestWord - строка, в которую сохраняется самое короткое слово из введенного текста.
  4. pch - указатель на текущий символ в тексте.
  5. ch - символ, который считывается с помощью сканера ввода.
  6. canContinue - флаг, который позволяет продолжать работу программы.
  7. i - счетчик, используемый в цикле. Список действий:
  8. Пользователю предлагается ввести текст.
  9. Если ввод некорректен (текст превышает максимально допустимую длину или содержит нежелательные символы), программа выводит сообщение об ошибке и просит ввести корректный текст.
  10. Текст разбивается на отдельные слова с помощью функции strtok.
  11. Каждое слово выводится на экран вместе с его длиной.
  12. Если это первое слово в тексте, оно сохраняется как самое длинное и самое короткое слово.
  13. Для каждого следующего слова проверяется его длина и, если оно длиннее или короче самого длинного или самого короткого слова, оно заменяет предыдущее самое длинное или самое короткое слово.
  14. После обработки всех слов программа выводит самое длинное и самое короткое слово.
  15. Пользователю предлагается продолжить работу с программой (ввод 'y' или 'n').
  16. Если пользователь вводит 'y', программа продолжает работу с шага 1.
  17. Если пользователь вводит 'n', программа завершается.

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


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

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

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