Описать структуру с именем ZNAK - C (СИ) (74675)
Формулировка задачи:
Описать структуру с именем ZNAK, содержащую следующие поля:
• фамилия, имя;
• знак зодиака;
• дата рождения (массив из трёх чисел).
Задание на поиск: найти информацию о людях, родившихся под знаком, название которого введено с клавиатуры.
Прошу помочь с программой, заранее спасибо!
Решение задачи: «Описать структуру с именем ZNAK»
textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
enum {
MAX_SIZE_STR = 20
};
typedef enum Zodiac{
ARIES, // овен
TAURUS, // телец
GEMINI, // близнецы
CANCER, // рак
LEO, // лев
VIRGO, // дева
LIBRA, // весы
SCORPIO, // скорпион
SAGITTARIUS, // стрелец
CAPRICORN, // козерог
AQUARIUS, // водолей
PISCES // рыбы
}Zodiac;
typedef struct Person{
char fn[MAX_SIZE_STR];
char ln[MAX_SIZE_STR];
Zodiac zdc;
unsigned bday[3];
}Person;
int main(void){
const char *strzs[] = { "овен",
"телец",
"близнецы",
"рак",
"лев",
"дева",
"весы",
"скорпион",
"стрелец",
"козерог",
"водолей",
"рыбы" };
const int size_strzs = sizeof(strzs) / sizeof(char*);
Person p[] = { {"Vasya", "Sidorow", VIRGO, {10, 5, 1980}},
{"Sasha", "Galkin", TAURUS, { 1, 5, 1970}},
{"Vanya", "Utkin", TAURUS, { 3, 7, 1995}} }; // и т. д.
char strz[MAX_SIZE_STR] = "телец";
int z = 0;
for (; (z < size_strzs) && strcmp(strz, strzs[z]); ++z);
if (z < size_strzs){
for (int i = 0; i < sizeof(p) / sizeof(Person); ++i){
if (p[i].zdc == z){
printf("%s %s %s %d/%d/%d\n", p[i].fn, p[i].ln, strzs[z],
p[i].bday[0], p[i].bday[1], p[i].bday[2]);
}
}
}else printf("Некорректный зодиак\n");
return EXIT_SUCCESS;
}