Вывести полные данные об участниках, родившихся в заданном году - C (СИ)
Формулировка задачи:
Дана таблица участников соревнований по бегу в виде массива структур.
Составить программу, в которой в диалоге вводится исходный массив,
выводится массив структур в виде таблицы и выполняется задание
соответствующего варианта. Массив заполняется произвольными данными.
Со структурами работать только через указатели на структуру.
Вывести полные данные об участниках, родившихся в заданном году.
Решение задачи: «Вывести полные данные об участниках, родившихся в заданном году»
textual
Листинг программы
typedef struct
{
int d, m, y;
} Date;
typedef struct
{
char *name;
int Record;
Date *date;
} Sportsmen;
int main()
{
Sportsmen *sm = malloc(sizeof(Sportsmen)*5);
for(int i = 0; i<5; i++)
{
if((sm[i]->date->y)==1985)
printf("%s %d %d/%d/%d\n", sm[i]->name, sm[i]->Record, sm[i]->date.d, sm[i]->date.m, sm[i]->date.y);
}
}
Объяснение кода листинга программы
В данном коде создается структура данных для хранения информации об участниках, а также описывается условие задачи - вывод данных об участниках, родившихся в 1985 году.
- Создаются две структуры данных:
Dateпредставляет дату рождения участника и содержит поляd,m,yдля хранения дня, месяца и года соответственно.Sportsmenпредставляет информацию об участнике и содержит поля:name- указатель на строку, хранящую имя участника.Record- целочисленное поле, хранящее рекорд участника.date- указатель на структуруDate, хранящую дату рождения участника.
- В основной функции
main()выделяется память под массив из 5 структурSportsmenс помощью функцииmalloc(). - Затем в цикле
forпроходится по всем элементам массиваsm. Для каждого элемента проверяется, совпадает ли год рождения участника с заданным (1985). Если да, то выводится информация о данном участнике в формате: имя участника, рекорд, день рождения, месяц рождения, год рождения. Таким образом, в результате выполнения данного кода будет выведена информация о 5 участниках, родившихся в 1985 году, если такие участники есть в массивеsm.