Сортировка списка файлов по имени, дате и размеру - C (СИ)
Формулировка задачи:
задан список файлов в папке, для каждого из которых указаны имя, расширение, размер, дата. реализовать сортировку по возрастанию и убыванию по всем характеристикам и подсчитать суммарный объём.
заполнение верно?как применить qsort?и можно выводить структуру на экран?
так структуру выведет?
#include<conio.h> #include<stdlib.h> #include<stdio.h> struct str { char name; char exp; float size; float date; }; int main() { struct str a[4]; int i=0; float j=0; { for(i; i < 4; i++) printf("file #%i",i); printf("enter name"); scanf("%c",&a[i].name); printf("enter expansion"); scanf("%c",&a[i].exp); printf("enter size"); scanf("%f",&a[i].size); printf("enter date"); scanf("%f",&a[i].date); } {for(i=0, i < 4, i++) j=j+a[i].size } printf("common size %f",j);
{for(i=0, i < 4, i++) printf("%f%c",a[i]); }
Решение задачи: «Сортировка списка файлов по имени, дате и размеру»
textual
Листинг программы
#include <stdlib.h> #include <time.h> #include <stdio.h> #include <string.h> #define STR_LEN 64 typedef struct str { char name[STR_LEN]; char exp[STR_LEN]; unsigned long size; int tm_date; } str_t; int name_c(const void * a, const void * b){ return strcmp(((str_t*)a)->name, ((str_t*)b)->name); } int exp_c(const void * a, const void * b){ return strcmp(((str_t*)a)->exp, ((str_t*)b)->exp); } int size_c(const void * a, const void * b){ return ((str_t*)a)->size - ((str_t*)b)->size; } int tm_date_c(const void * a, const void * b){ return ((str_t*)a)->tm_date - ((str_t*)b)->tm_date; } void dump(const str_t * arr, size_t cnt){ while ( cnt-- ){ printf("%-20s%-5s%10u%10d\n", arr->name, arr->exp, arr->size, arr->tm_date); ++arr; } } #define NUM_FILES 4 int main(void) { str_t a[NUM_FILES]; int i; for(i=0; i < 4; i++){ printf("file #%i\n", i+1); printf("enter name: "); scanf("%s", a[i].name); printf("enter expansion: "); scanf("%s", a[i].exp); printf("enter size: "); scanf("%lu", &a[i].size); printf("enter date: "); scanf("%i", &a[i].tm_date); } printf("\n Unsorted \n"); dump(a, NUM_FILES); printf("\n Sorted by name: \n"); qsort(a, NUM_FILES, sizeof(str_t), name_c); dump(a, NUM_FILES); printf("\n Sorted by expansion: \n"); qsort(a, NUM_FILES, sizeof(str_t), exp_c); dump(a, NUM_FILES); printf("\n Sorted by size: \n"); qsort(a, NUM_FILES, sizeof(str_t), size_c); dump(a, NUM_FILES); printf("\n Sorted by date: \n"); qsort(a, NUM_FILES, sizeof(str_t), tm_date_c); dump(a, NUM_FILES); /* с этим сами как-нибудь printf("common size %f",j); а этого у меня нету getch(); */ return 0; }
Объяснение кода листинга программы
- В начале кода определяются необходимые переменные и функции:
str_t
- структура данных, представляющая файл, содержащая поля для имени файла, его расширения, размера и даты создания.name_c
,exp_c
,size_c
,tm_date_c
- функции сравнения, которые будут использоваться в функцииqsort
для сортировки массива файлов по различным критериям.dump
- функция для вывода содержимого массива файлов в отсортированном виде.NUM_FILES
- количество файлов, которые будут обрабатываться в программе.main
- главная функция программы, в которой происходит взаимодействие с пользователем и выполнение всех необходимых операций.
- В функции
main
создается массивa
типаstr_t
размеромNUM_FILES
. - Пользователю предлагается ввести данные для каждого файла: имя, расширение, размер и дату создания.
- Данные, введенные пользователем, сохраняются в соответствующих полях массива
a
. - Выводится неотсортированный список файлов.
- Массив
a
сортируется по имени файла с помощью функцииqsort
и функции сравненияname_c
. - Выводится отсортированный по имени файла список файлов.
- Массив
a
сортируется по расширению файла с помощью функцииqsort
и функции сравненияexp_c
. - Выводится отсортированный по расширению файла список файлов.
- Массив
a
сортируется по размеру файла с помощью функцииqsort
и функции сравненияsize_c
. - Выводится отсортированный по размеру файла список файлов.
- Массив
a
сортируется по дате создания файла с помощью функцииqsort
и функции сравненияtm_date_c
. - Выводится отсортированный по дате создания файла список файлов.
- Программа завершается возвратом значения
0
из функцииmain
, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д