Дано предложение. Расположить слова в порядке возрастания числа букв в них - C (СИ)

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

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

Помогите пожалуйста с задачей: Дано предложение. Расположить слова в порядке возрастания числа букв в них. Заранее спасибо кто откликнется

Решение задачи: «Дано предложение. Расположить слова в порядке возрастания числа букв в них»

textual
Листинг программы
  1. /*Дано предложение. Расположить слова в порядке возрастания числа букв
  2. */
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #define SIZE 1024   //max length of text
  7. #define LEN 20      //max length of word
  8.  
  9. char **ArrayOfWords(char *s, int &num, int &rows)
  10. {   char **arr, *word;
  11.     int i, N;
  12.  
  13.     N = strlen(s) / 2;
  14.     arr = (char**) malloc(N);
  15.     for (i = 0; i<N; i++)
  16.         arr[i] = (char*) malloc(LEN);
  17.  
  18.     word = strtok (s," ,.-");
  19.     strcpy(arr[0], word);
  20.     i = 1;
  21.  
  22.     while (word != NULL)
  23.     {   word = strtok (NULL, " ,.-");
  24.         if (word == NULL) break;
  25.         strcpy(arr[i], word);
  26.         i++;
  27.     }
  28.     rows = N;   //max number of words
  29.     num = i;    //real number of words
  30.     return arr;
  31. }
  32.  
  33. void Swap (char *a, char *b)
  34. {   char *temp = (char*) malloc (LEN);
  35.     strcpy(temp, a);
  36.     strcpy(a, b);
  37.     strcpy(b, temp);
  38. }
  39.  
  40. void Sorted (char **arr, int num)
  41. {   int i, j;
  42.     for (i = 0; i<num-1; i++)
  43.         for (j = i+1; j<num; j++)
  44.             if (strlen(arr[i]) > strlen(arr[j]))
  45.                 Swap (arr[i], arr[j]);
  46. }
  47.  
  48. int main()
  49. {   char buf[SIZE], **arr;
  50.     int i, M = 0, rows = 0; //M - real number of words
  51.    
  52.     printf("Your string:\n");
  53.     fgets(buf, SIZE, stdin);
  54.     buf[strlen(buf) - 1] = '\0';
  55.  
  56.     arr = ArrayOfWords(buf, M, rows);
  57.     Sorted (arr, M);
  58.    
  59.     printf("\n\nThe words sorted:\n");
  60.     for (i = 0; i<M; i++)
  61.         puts(arr[i]);
  62.  
  63.     getchar();
  64.     return 0;
  65. }

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

В данном коде на языке C представлена функция, которая принимает в качестве параметров строку, указатель на количество слов и указатель на количество строк. Функция сначала разбивает входную строку на слова, используя разделители ,.-, затем выделяет память под массив указателей на слова. Далее функция сортирует полученный массив слов в порядке возрастания длины слов. В основной функции программы вызывается функция ArrayOfWords для разбиения входной строки на слова и подсчета количества слов. Затем вызывается функция Sorted для сортировки слов. Наконец, с помощью цикла выводятся отсортированные слова.

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы