Структуры: определить знак гороскопа по дате рождения - 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`, которая форматирует строку и выводит ее на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д