Упорядочить и вывести строки в порядке возрастания значений их длины - C (СИ)
Формулировка задачи:
Пользователь задает с консоли несколько строк (не больше 10). Упорядочить и вывести строки в порядке возрастания значений их длины.
Решение задачи: «Упорядочить и вывести строки в порядке возрастания значений их длины»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define MAX_STR_LEN 80
int main(){
int i, j, n = 10;
printf("Enter n:"); scanf("%d%*c", &n);
char** strings = (char**)calloc(n, sizeof(char*));
for(i = 0; i < n; i++){
strings[i] = (char*)calloc(MAX_STR_LEN, sizeof(char));
printf("Enter string #%d: ", i + 1);
fgets(strings[i], MAX_STR_LEN - 1, stdin);
}
for(i = 0; i < n - 1; i++){
for(j = i + 1; j < n; j++){
if(strlen(strings[i]) > strlen(strings[j])){
char* t = strings[i];
strings[i] = strings[j];
strings[j] = t;
}
}
}
for(i = 0; i < n; i++){
printf("String #%d: %s", i + 1, strings[i]);
}
for(i = 0; i < n; i++)
free(strings[i]);
free(strings);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
i,j- для циклов;n- количество строк;strings- массив указателей на строки;MAX_STR_LEN- максимальная длина строки.
- Пользователю предлагается ввести количество строк.
- Динамически выделяется память под массив указателей на строки, а затем под каждую строку отдельно.
- Пользователю предлагается ввести строки.
- Строки сортируются в порядке возрастания их длины.
- Отсортированные строки выводятся на экран.
- Все выделенные строки и массив указателей освобождаются.
- Программа завершается, возвращая 0.