Упорядочить слова в строке по возрастанию их длины - C (СИ)
Формулировка задачи:
Нужно упорядочить слова в строке по возрастанию их длины
Найти ошибки
Листинг программы
- #include "StdAfx.h"
- #include "stdio.h"
- #include "string.h"
- #define m 20
- #define n 10
- int SortWords(char s[m][n])
- {
- char tmp[n];
- int i, j;
- for (i = 0; i<m; i++)
- gets_s(s[i]);
- for (i = 0; i<m - 1; i++)
- for (j = i + 1; j<m; j++)
- if (strlen(s[i]) > strlen(s[j]))
- {
- strcpy_s(tmp, s[i]);
- strcpy_s(s[i], s[j]);
- strcpy_s(s[j], tmp);
- }
- }
- int main()
- {
- int i, j;
- char mas[m][n];
- char tmp[n];
- printf("Insert %d words with not more than %d letters \n", m, n);
- SortWords(mas[m][n]);
- for (i = 0; i<m; i++)
- printf("%s\n", mas[i]);
- return 0;
- }
Решение задачи: «Упорядочить слова в строке по возрастанию их длины»
textual
Листинг программы
- #include "stdio.h"
- #include "string.h"
- #define m 20
- #define n 10
- void SortWords(char s[m][n])
- {
- char tmp[n];
- int i, j;
- for (i = 0; i<m; i++)
- gets_s(s[i],n-1);
- for (i = 0; i<m - 1; i++)
- for (j = i + 1; j<m; j++)
- if (strlen(s[i]) > strlen(s[j]))
- {
- strcpy_s(tmp, n-1, s[i]);
- strcpy_s(s[i], n-1, s[j]);
- strcpy_s(s[j], n-1, tmp);
- }
- }
- int main()
- {
- int i;
- char mas[m][n];
- printf("Insert %d words with not more than %d letters \n", m, n-1);
- SortWords(mas);
- for (i = 0; i<m; i++)
- printf("%s\n", mas[i]);
- return 0;
- }
Объяснение кода листинга программы
Вывод списка элементов кода:
- Вложенные массивы
s
иmas
представляют собой двумерный массив строк, где каждый элементs[i]
иmas[i]
является строкой, аn
- это максимальное количество символов в каждой строке. - В начале функции
main()
программа просит ввестиm
слов с не более чемn-1
символов в каждом слове. - Функция
SortWords()
сортирует строки во вложенном массивеs
по возрастанию длины строки. Для этого используется два вложенных цикла: внешний цикл для прохода по всем элементам массива и внутренний цикл для прохода по элементам, начиная с текущего индекса внешнего цикла. - Если текущая строка
s[i]
длиннее текущей строкиs[j]
, то с помощью функцииstrcpy_s()
строкаs[i]
копируется в буферtmp
, а затем строкаs[j]
заменяется наtmp
. Таким образом, в результате сортировки строкиs[i]
становится передs[j]
. - В функции
main()
после сортировки выводится отсортированный массивmas
. - Функция
printf()
используется для вывода строки в консоль. - Вложенные циклы в функции
main()
используются для прохода по всем элементам массиваmas
и вывода каждого элемента на новой строке. - Функция
strcpy_s()
используется для копирования строки из одного места в другое. - В функции
main()
программа завершается возвратом значения 0. - Вложенные циклы в функции
main()
используются для прохода по всем элементам массиваmas
и вывода каждого элемента на новой строке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д