Структуры: определить знак гороскопа по дате рождения - C (СИ)

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

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

По дате рождения (число, месяц, год) определить, к каким знакам зодиакального и восточного гороскопов будет принадлежать человек. Использовать тип данных «структура». не знаю, как прописать условие, для сопоставления года и восточного гороскопа ( их всего 12 знаков)
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <clocale>
 
int main() { 
    setlocale (LC_CTYPE, "Russian");
    int year,mo,data;
    
    printf("Введите год рождения: \n");
scanf("%d",&year);
printf("Введите месяц рождения: \n");
scanf("%d",&mo);
printf("Введите число рождения: \n");
scanf("%d",&data);
 if(mo<13 && data<32) 
 {
     if ((mo==1 && data<21) || (mo==12&&data>21))
     {
     printf ("Вы Козерог ");
     }
     else 
         if((mo=1 && data>20 && data <31)||(mo=2 && data<21)) 
         {
         printf ("Вы Водолей");
         }
 }
 else { printf ("не существует числа");}
getch();
    return 0;
}
Код не до конца, а только самое начало. думаю продолжать в том же духе. загвоздка еще в числах февраля. ведь раз в 4 года количество дней не такое как обычно year%%12 *12 =a year -a=x - примерно так выглядит придуманное условие для распознавания года В общем, помогите кто чем сможет. и да, написано все не в структурах, а с использованием массива. это все конечно надо перепрофилировать желательно бы... но наверно, это уже слишком много.

Решение задачи: «Структуры: определить знак гороскопа по дате рождения»

textual
Листинг программы
int Nd[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
char *Znak[12] = { "Крыса", "Бык" , ... };
 
if (data < 1 || data > Nd[mo-1] ) ... // Error
if (year%4==0 && mo==2 && data==29) ... // Error
printf(%s\n", Znak[(year-1900)%12]);

Объяснение кода листинга программы

  1. int Nd[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - в этой строке кода объявляется массив Nd типа int с 12 элементами. Каждый элемент массива представляет количество дней в соответствующем месяце.
  2. char *Znak[12] = {Крыса,Бык, ... }; - здесь объявляется массив Znak типа char * с 12 элементами. Каждый элемент массива является указателем на строку, представляющую знак зодиака.
  3. if (data < 1 || data > Nd[mo-1] ) ... // Error - этот блок кода проверяет, находится ли дата data в допустимом диапазоне. Если дата некорректна, то выполняется ошибка.
  4. if (year%4==0 && mo==2 && data==29) ... // Error - этот блок кода проверяет, является ли год високосным и соответствует ли дата 29 февраля. Если условия выполняются, то выполняется ошибка.
  5. printf(%s\n, Znak[(year-1900)%12]);- этот фрагмент кода выводит на экран знак зодиака, соответствующий году рождения. Для этого используется функцияprintf`, которая форматирует строку и выводит ее на экран.

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы