Ввести последовательность записей с информацией о некоторых европейских странах. Дата государственного праздника задается символьной строчкой в форме День Месяц, например 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 + 3;
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);
}
}