Массив записей, содержащих дату, упорядочить по возрастанию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дан массив записей, содержащих дату (число, месяц, год) и время (час, минута, секунда). Упорядочить этот массив в порядке «возрастания», т.е. от более ранних значений к более поздним. помогите пожалуйста, вообще не понимаю что и как нужно сделать (Си, ncurses)

Решение задачи: «Массив записей, содержащих дату, упорядочить по возрастанию»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
typedef struct datetime {
 int day,mon,year,hour,min,sec;
};
 
int dates_compare(datetime d1,datetime d2) {
 if (d1.year>d2.year) return 1;
 else if (d1.year<d2.year) return -1;
 else {
  if (d1.mon>d2.mon) return 1;
  else if (d1.mon<d2.mon) return -1;
  else {
   if (d1.day>d2.day) return 1;
   else if (d1.day<d2.day) return -1;
   else {
    if (d1.hour>d2.hour) return 1;
    else if (d1.hour<d2.hour) return -1;
    else {
     if (d1.min>d2.min) return 1;
     else if (d1.min<d2.min) return -1;
     else {
      if (d1.sec>d2.sec) return 1;
      else if (d1.sec<d2.sec) return -1;
      else return 0;
     }
    }
   }
  }
 }
}
 
int main() {
 const int n=10;
 datetime d[n];
 int i,j;
 
 printf ("\nИсходные данные");
 for (i=0; i<n; i++) { //вводить столько информации с клавы мне лень
  d[i].day=1+random(28);
  d[i].mon=1+random(12);
  d[i].year=2000+random(14);
  d[i].hour=random(24);
  d[i].min=random(60);
  d[i].sec=random(60);
  printf ("\n%02d.%02d.%4d, %02d:%02d:%02d",
   d[i].day,d[i].mon,d[i].year,d[i].hour,d[i].min,d[i].sec);
 }
 
 datetime temp;
 for (i=0; i<n-1; i++)
 for (j=i+1; j<n; j++)
 if (dates_compare(d[i],d[j])>0) {
  temp=d[i]; d[i]=d[j]; d[j]=temp;
 }
 
 printf ("\nОстортированные данные");
 for (i=0; i<n; i++)
  printf ("\n%02d.%02d.%4d, %02d:%02d:%02d",
   d[i].day,d[i].mon,d[i].year,d[i].hour,d[i].min,d[i].sec);
 
 printf("\n");
 system("pause");
 return 0;
}

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

В этом коде используется структура данных datetime, которая содержит поля для хранения дня, месяца, года, часа, минуты и секунды. Функция dates_compare сравнивает два объекта datetime и возвращает значение меньше или равное нулю, если первый объект меньше второго по годам, и больше нуля, если первый объект больше второго. Если года равны, функция сравнивает месяцы, дни, часы, минуты и секунды. В функции main создается массив из 10 объектов datetime с случайными значениями. Затем в цикле происходит сортировка этого массива с использованием функции dates_compare и алгоритма сортировки пузырьком. После сортировки выводится отсортированный массив.

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


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

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

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