Как сделать сортировку по дате, если дата задается символьной строкой

Cрочно нужна помощь:

Ввести последовательность записей с информацией о некоторых европейских странах: <Название>, <Население>, <Основной гос.праздник>, <Дата праздника>. Дата государственного праздника задается символьной строчкой в форме День Месяц, например 24 августа. Распечатайте введенный список в виде таблицы. Затем переставить данные в календарном порядке по дате основного государственного праздника и еще раз напечатать

Вопрос: Как сортировать данные структуры по дате, если дата задаётся символьной строкой?

Вот мой код:

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#define N 25

int main()
{
  int count, n;

  struct country {
  char name[35];
  double population;
  char holl[25];
  char date[20];
}list[N], per, * po1, * po2;

system("chcp 1251");
printf("Кол-во стран- ");
scanf_s("%d", &n); 
getchar();
printf("\nДанные: \n");
for (count = 0; count < n; count++) {
  printf(" %d. Название страны: ", (count + 1));
  gets_s(list[count].name);
  printf(" %d. Население: ", (count + 1));
  scanf_s("%lf", &list[count].population);
  getchar();
  printf(" %d. Гос. праздник: ", (count + 1));
  gets_s(list[count].holl);
  printf(" %d. Дата: ", (count + 1));
  gets_s(list[count].date);
  printf("\n");
  rewind(stdin);
}

  printf("\n\t\t\t\t\tТаблиця данных:\n\n");
  printf("  Название\t\tНаселение\t\tГос.праздник\t\t\tДата");
 for (count = 0; count < n; count++) {
  printf("\n %d. %s\t\t%.1lf\t\t%s\t\t%s", (count + 1), (list + count)->name, 
  list[count].population, (list + count)->holl, (list + count)->date);
}

 for (count = 0; count < n; count++) {
  po1 = list; 
  po2 = list + 1;
   for (; po2 < list + n - count; po1++, po2++)
    if (po1->date < po2->date) {
      per = *po1;
      *po1 = *po2;
      *po2 = per;
   }
}
 printf("\n\n\t\t\Отсортированные данные(по дате):\n\n");
 printf("  Название\t\tНаселение\t\Гос.праздник\t\t\tДата");
for (count = 0; count < n; count++) {
 printf("\n %d. %s\t\t%.1lf\t\t%s\t\t%s", (count + 1), (list + count)->name, 
 list[count].population, (list + count)->holl, (list + count)->date);
 }
}

Заранее огромное спасибо всем кто откликнется!!!

P.S. Убедительна просьба обойтись без qsort и strcmp. Я пока ещё новичек. Но если без них совсем будет никак, то прошу объяснить как и что делать))


Ответы (0 шт):