Упорядочить и вывести строки в порядке возрастания значений их длины - 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;
}

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

В этом коде:

  1. Объявлены переменные:
    • i, j - для циклов;
    • n - количество строк;
    • strings - массив указателей на строки;
    • MAX_STR_LEN - максимальная длина строки.
  2. Пользователю предлагается ввести количество строк.
  3. Динамически выделяется память под массив указателей на строки, а затем под каждую строку отдельно.
  4. Пользователю предлагается ввести строки.
  5. Строки сортируются в порядке возрастания их длины.
  6. Отсортированные строки выводятся на экран.
  7. Все выделенные строки и массив указателей освобождаются.
  8. Программа завершается, возвращая 0.

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


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

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

11   голосов , оценка 4.455 из 5
Похожие ответы