Упорядочить слова в строке по возрастанию их длины - C (СИ)

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

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

Нужно упорядочить слова в строке по возрастанию их длины Найти ошибки
Листинг программы
  1. #include "StdAfx.h"
  2. #include "stdio.h"
  3. #include "string.h"
  4. #define m 20
  5. #define n 10
  6. int SortWords(char s[m][n])
  7. {
  8. char tmp[n];
  9. int i, j;
  10. for (i = 0; i<m; i++)
  11. gets_s(s[i]);
  12. for (i = 0; i<m - 1; i++)
  13. for (j = i + 1; j<m; j++)
  14. if (strlen(s[i]) > strlen(s[j]))
  15. {
  16. strcpy_s(tmp, s[i]);
  17. strcpy_s(s[i], s[j]);
  18. strcpy_s(s[j], tmp);
  19. }
  20. }
  21.  
  22. int main()
  23. {
  24. int i, j;
  25. char mas[m][n];
  26. char tmp[n];
  27. printf("Insert %d words with not more than %d letters \n", m, n);
  28. SortWords(mas[m][n]);
  29. for (i = 0; i<m; i++)
  30. printf("%s\n", mas[i]);
  31. return 0;
  32. }

Решение задачи: «Упорядочить слова в строке по возрастанию их длины»

textual
Листинг программы
  1. #include "stdio.h"
  2. #include "string.h"
  3.  
  4. #define m 20
  5. #define n 10
  6.  
  7. void SortWords(char s[m][n])
  8. {
  9.     char tmp[n];
  10.     int i, j;
  11.     for (i = 0; i<m; i++)
  12.         gets_s(s[i],n-1);
  13.     for (i = 0; i<m - 1; i++)
  14.         for (j = i + 1; j<m; j++)
  15.             if (strlen(s[i]) > strlen(s[j]))
  16.             {
  17.                 strcpy_s(tmp, n-1, s[i]);
  18.                 strcpy_s(s[i], n-1, s[j]);
  19.                 strcpy_s(s[j], n-1, tmp);
  20.             }
  21. }
  22.  
  23.  
  24. int main()
  25. {
  26.     int i;
  27.     char mas[m][n];
  28.  
  29.     printf("Insert %d words with not more than %d letters \n", m, n-1);
  30.     SortWords(mas);
  31.  
  32.     for (i = 0; i<m; i++)
  33.         printf("%s\n", mas[i]);
  34.  
  35.     return 0;
  36. }

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

Вывод списка элементов кода:

  1. Вложенные массивы s и mas представляют собой двумерный массив строк, где каждый элемент s[i] и mas[i] является строкой, а n - это максимальное количество символов в каждой строке.
  2. В начале функции main() программа просит ввести m слов с не более чем n-1 символов в каждом слове.
  3. Функция SortWords() сортирует строки во вложенном массиве s по возрастанию длины строки. Для этого используется два вложенных цикла: внешний цикл для прохода по всем элементам массива и внутренний цикл для прохода по элементам, начиная с текущего индекса внешнего цикла.
  4. Если текущая строка s[i] длиннее текущей строки s[j], то с помощью функции strcpy_s() строка s[i] копируется в буфер tmp, а затем строка s[j] заменяется на tmp. Таким образом, в результате сортировки строки s[i] становится перед s[j].
  5. В функции main() после сортировки выводится отсортированный массив mas.
  6. Функция printf() используется для вывода строки в консоль.
  7. Вложенные циклы в функции main() используются для прохода по всем элементам массива mas и вывода каждого элемента на новой строке.
  8. Функция strcpy_s() используется для копирования строки из одного места в другое.
  9. В функции main() программа завершается возвратом значения 0.
  10. Вложенные циклы в функции main() используются для прохода по всем элементам массива mas и вывода каждого элемента на новой строке.

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


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

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

12   голосов , оценка 3.5 из 5

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

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

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