Описать структуру с именем ZNAK - C (СИ) (74675)

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

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

Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак зодиака; • дата рождения (массив из трёх чисел). Задание на поиск: найти информацию о людях, родившихся под знаком, название которого введено с клавиатуры. Прошу помочь с программой, заранее спасибо!

Решение задачи: «Описать структуру с именем ZNAK»

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5.  
  6. enum {
  7.     MAX_SIZE_STR = 20
  8. };
  9.  
  10. typedef enum Zodiac{
  11.     ARIES,       // овен
  12.     TAURUS,      // телец
  13.     GEMINI,      // близнецы
  14.     CANCER,      // рак
  15.     LEO,         // лев
  16.     VIRGO,       // дева
  17.     LIBRA,       // весы
  18.     SCORPIO,     // скорпион
  19.     SAGITTARIUS, // стрелец
  20.     CAPRICORN,   // козерог
  21.     AQUARIUS,    // водолей
  22.     PISCES       // рыбы
  23. }Zodiac;
  24.  
  25. typedef struct Person{
  26.     char fn[MAX_SIZE_STR];
  27.     char ln[MAX_SIZE_STR];
  28.     Zodiac zdc;
  29.     unsigned bday[3];
  30. }Person;
  31.  
  32.  
  33. int main(void){
  34.     const char *strzs[] = { "овен",
  35.                             "телец",
  36.                             "близнецы",
  37.                             "рак",
  38.                             "лев",
  39.                             "дева",
  40.                             "весы",
  41.                             "скорпион",
  42.                             "стрелец",
  43.                             "козерог",
  44.                             "водолей",
  45.                             "рыбы" };
  46.                                  
  47.     const int size_strzs = sizeof(strzs) / sizeof(char*);
  48.    
  49.     Person p[] = { {"Vasya", "Sidorow", VIRGO,  {10, 5, 1980}},
  50.                    {"Sasha", "Galkin",  TAURUS, { 1, 5, 1970}},
  51.                    {"Vanya", "Utkin",   TAURUS, { 3, 7, 1995}} }; // и т. д.
  52.    
  53.     char strz[MAX_SIZE_STR] = "телец";
  54.    
  55.    
  56.     int z = 0;
  57.     for (; (z < size_strzs) && strcmp(strz, strzs[z]); ++z);
  58.    
  59.     if (z < size_strzs){
  60.         for (int i = 0; i < sizeof(p) / sizeof(Person); ++i){
  61.             if (p[i].zdc == z){
  62.                 printf("%s %s %s %d/%d/%d\n", p[i].fn, p[i].ln, strzs[z],
  63.                                               p[i].bday[0], p[i].bday[1], p[i].bday[2]);
  64.             }
  65.         }
  66.     }else printf("Некорректный зодиак\n");
  67.    
  68.     return EXIT_SUCCESS;
  69. }

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


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

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

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут