Упорядочить слова в строке по возрастанию их длины - 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
и вывода каждого элемента на новой строке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д