Структуры: определить знак гороскопа по дате рождения - C (СИ)
Формулировка задачи:
По дате рождения (число, месяц, год) определить, к каким знакам зодиакального и восточного гороскопов будет принадлежать человек. Использовать тип данных «структура».
не знаю, как прописать условие, для сопоставления года и восточного гороскопа ( их всего 12 знаков)
Код не до конца, а только самое начало. думаю продолжать в том же духе.
загвоздка еще в числах февраля. ведь раз в 4 года количество дней не такое как обычно
year%%12 *12 =a year -a=x - примерно так выглядит придуманное условие для распознавания года
В общем, помогите кто чем сможет. и да, написано все не в структурах, а с использованием массива. это все конечно надо перепрофилировать желательно бы... но наверно, это уже слишком много.
#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;
}Решение задачи: «Структуры: определить знак гороскопа по дате рождения»
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]);
Объяснение кода листинга программы
int Nd[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };- в этой строке кода объявляется массивNdтипаintс 12 элементами. Каждый элемент массива представляет количество дней в соответствующем месяце.char *Znak[12] = {Крыса,Бык, ... };- здесь объявляется массивZnakтипаchar *с 12 элементами. Каждый элемент массива является указателем на строку, представляющую знак зодиака.if (data < 1 || data > Nd[mo-1] ) ... // Error- этот блок кода проверяет, находится ли датаdataв допустимом диапазоне. Если дата некорректна, то выполняется ошибка.if (year%4==0 && mo==2 && data==29) ... // Error- этот блок кода проверяет, является ли год високосным и соответствует ли дата 29 февраля. Если условия выполняются, то выполняется ошибка.printf(%s\n, Znak[(year-1900)%12]);- этот фрагмент кода выводит на экран знак зодиака, соответствующий году рождения. Для этого используется функцияprintf`, которая форматирует строку и выводит ее на экран.