Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Знаки зодиака. Работа с интервалами дат или любой 
:(
    Опции темы
CasperSC
Дата 24.4.2010, 22:39 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 27.11.2009

Репутация: нет
Всего: 1



Пишу класс, в котором есть методы, которые должны возвращать название знака зодиака на основе даты полученной в параметре. Но вот, что-то не ясно как это вообще сделать? Может кто подскажет? Я пробовал проверять по начальной дате какого-то знака и конечной, но что-то у меня вообще ничего не получилось:
Код


    /// <summary>
    /// Класс "Знак зодиака". 
    /// Содержит методы для работы со знаками зодиака,
    /// для расчёта знака зодиака по дате рождения
    /// </summary>
    class SignOfTheZodiac
    {
        String[] Zodiac = new String[12] { "Козерог", "Водолей", "Рыбы", "Овен", "Телец", "Близнецы", "Рак",
            "Лев", "Дева", "Весы", "Скорпион", "Стрелец" };
        #region [ Даты ]
        /// <summary>
        /// Козерог. Начальная дата
        /// </summary>
        DateTime signCapricorn_begin;
        /// <summary>
        /// Козерог. Конечная дата
        /// </summary>
        DateTime signCapricorn_end;

        /// <summary>
        /// Водолей. Начальная дата
        /// </summary>
        DateTime signAquarius_begin;
        /// <summary>
        /// Водолей. Конечная дата
        /// </summary>
        DateTime signAquarius_end;

        /// <summary>
        /// Рыбы. Начальная дата
        /// </summary>
        DateTime signPisces_begin;
        /// <summary>
        /// Рыбы. Конечная дата
        /// </summary>
        DateTime signPisces_end;

        /// <summary>
        /// Овен. Начальная дата
        /// </summary>
        DateTime signAries_begin;
        /// <summary>
        /// Овен. Конечная дата
        /// </summary>
        DateTime signAries_end;

        /// <summary>
        /// Телец. Начальная дата
        /// </summary>
        DateTime signTaurus_begin;
        /// <summary>
        /// Телец. Конечная дата.
        /// </summary>
        DateTime signTaurus_end;

        /// <summary>
        /// Близнецы. Начальная дата
        /// </summary>
        DateTime signTwins_begin;
        /// <summary>
        /// Близнецы. Конечная дата
        /// </summary>
        DateTime signTwins_end;

        /// <summary>
        /// Рак. Начальная дата
        /// </summary>
        DateTime signCancer_begin;
        /// <summary>
        /// Рак. Конечная дата
        /// </summary>
        DateTime signCancer_end;

        /// <summary>
        /// Лев. Начальная дата
        /// </summary>
        DateTime signLeo_begin;
        /// <summary>
        /// Лев. Конечная дата
        /// </summary>
        DateTime signLeo_end;

        /// <summary>
        /// Дева. Начальная дата
        /// </summary>
        DateTime signVirgo_begin;
        /// <summary>
        /// Дева. Конечная дата
        /// </summary>
        DateTime signVirgo_end;

        /// <summary>
        /// Весы. Начальная дата
        /// </summary>
        DateTime signLibra_begin;
        /// <summary>
        /// Весы. Конечная дата
        /// </summary>
        DateTime signLibra_end;

        /// <summary>
        /// Скорпион. Начальная дата
        /// </summary>
        DateTime signScorpio_begin;
        /// <summary>
        /// Скорпион. Конечная дата
        /// </summary>
        DateTime signScorpio_end;

        /// <summary>
        /// Стрелец. Начальная дата
        /// </summary>
        DateTime signSagittarius_begin;
        /// <summary>
        /// Стрелец. Конечная дата
        /// </summary>
        DateTime signSagittarius_end;

        #endregion

        /// <summary>
        /// Конструктор по умолчанию
        /// </summary>
        public SignOfTheZodiac()
        {
            //  Козерог  22 декабря - 20 января 
            signCapricorn_begin = new DateTime(DateTime.Now.Year, 12, 22);
            signCapricorn_end   = new DateTime(DateTime.Now.Year, 1, 20);

            //  Водолей  21 января - 20 февраля
            signAquarius_begin = new DateTime(DateTime.Now.Year, 1, 21);
            signAquarius_end   = new DateTime(DateTime.Now.Year, 2, 20);

            //  Рыбы     21 февраля - 20 марта
            signPisces_begin = new DateTime(DateTime.Now.Year, 2, 21);
            signPisces_end = new DateTime(DateTime.Now.Year, 3, 20);

            //  Овен     21 марта - 20 апреля 
            signAries_begin = new DateTime(DateTime.Now.Year, 3, 21);
            signAries_end = new DateTime(DateTime.Now.Year, 4, 20);

            //  Телец    21 апреля - 20 мая 
            signTaurus_begin = new DateTime(DateTime.Now.Year, 4, 21);
            signTaurus_end = new DateTime(DateTime.Now.Year, 5, 20);

            //  Близнецы 21 мая - 21 июня 
            signTwins_begin = new DateTime(DateTime.Now.Year, 5, 21);
            signTwins_end = new DateTime(DateTime.Now.Year, 6, 21);

            //  Рак      22 июня - 22 июля
            signCancer_begin = new DateTime(DateTime.Now.Year, 6, 22);
            signCancer_end = new DateTime(DateTime.Now.Year, 7, 22);

            //  Лев      23 июля - 23 августа
            signLeo_begin = new DateTime(DateTime.Now.Year, 7, 23);
            signLeo_end = new DateTime(DateTime.Now.Year, 8, 23);

            //  Дева     24 августа - 23 сентября 
            signVirgo_begin = new DateTime(DateTime.Now.Year, 8, 24);
            signVirgo_end = new DateTime(DateTime.Now.Year, 9, 23);

            //  Весы     24 сентября - 23 октября
            signLibra_begin = new DateTime(DateTime.Now.Year, 9, 24);
            signLibra_end = new DateTime(DateTime.Now.Year, 10, 23);

            //  Скорпион 24 октября - 22 ноября 
            signScorpio_begin = new DateTime(DateTime.Now.Year, 10, 24);
            signScorpio_end = new DateTime(DateTime.Now.Year, 11, 22);

            //  Стрелец  23 ноября - 21 декабря 
            signSagittarius_begin = new DateTime(DateTime.Now.Year, 11, 23);
            signSagittarius_end = new DateTime(DateTime.Now.Year, 12, 21);
        }
        //поместить в свойство возвращающее знак зодиака на основе текущей системной даты


        public String SignZodiac
        {
            get
            {
                return Zodiac[GetSignOfTheZodiac(DateTime.Now.Month, DateTime.Now.Day)];
            }
        }

        /// <summary>
        /// Знак зодиака
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        private int GetSignOfTheZodiac(int MonthDate, int DayDate) 
        {
            DateTime date = new DateTime(DateTime.Now.Year, MonthDate, DayDate);
            if (date >= signCapricorn_begin && date <= signCapricorn_end)
            {
                return 0;
            }
            return 11; //Это так, набросок. Проверял вообще работает это или нет, по моему, что-то я не то делаю. Я конечно увидел, что проверка не работает корректно, но всё же и не ясно как делать по другому
        }

        public String GetSignTheZodiac(int MonthDate, int DayDate)
        {
            DateTime date = new DateTime(DateTime.Now.Year, MonthDate, DayDate);
            if (date >= signCapricorn_begin && date <= signCapricorn_end)
            {
                return Zodiac[0];
            }
            return Zodiac[11]; //Это так, набросок. Проверял вообще работает это или нет, по моему, что-то я не то делаю. Я конечно увидел, что проверка не работает корректно, но всё же и не ясно как делать по другому
        }
    }

    //  Козерог  22 декабря - 20 января 
    //  Водолей  21 января - 20 февраля 
    //  Рыбы     21 февраля - 20 марта
    //  Овен     21 марта - 20 апреля 
    //  Телец    21 апреля - 20 мая 
    //  Близнецы 21 мая - 21 июня 
    //  Рак      22 июня - 22 июля 
    //  Лев      23 июля - 23 августа 
    //  Дева     24 августа - 23 сентября 
    //  Весы     24 сентября - 23 октября 
    //  Скорпион 24 октября - 22 ноября 
    //  Стрелец  23 ноября - 21 декабря 



Это сообщение отредактировал(а) CasperSC - 24.4.2010, 23:08
PM MAIL   Вверх
CasperSC
Дата 25.4.2010, 01:12 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 27.11.2009

Репутация: нет
Всего: 1



А всё, разобрался:

Код

private int ReturnNumberArrayZodiac(int MonthDate, int DayDate)
        {
            DateTime date = new DateTime(DateTime.Now.Year, MonthDate, DayDate);

            if (date >= signCapricorn_begin || date <= signCapricorn_end) //козерог
            {
                return 0;
            }
            ..........
            ..........
        }

PM MAIL   Вверх
Экскалупатор
Дата 25.4.2010, 11:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



Цитата(CasperSC @  25.4.2010,  00:12 Найти цитируемый пост)
if (date >= signCapricorn_begin || date <= signCapricorn_end) //козерог
            {
                return 0;
            }

и что так правильно находит? а если взять дату 21 января? то вернет true, хотя на самом деле диапазон не верный...

Добавлено через 3 минуты и 48 секунд
и как то странно оно у тебя описано. ты что будешь 12 ифов писать? по одному для каждого знака зодиака? будет лажа. опиши структуру "знак зодиака", там сделай поля: название, дата начала, дата окончания. потом сделай массив таких структур, и работай с ними в цикле. будет на порядок меньше переменных, и меньше ифов.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.