Форум программистов, компьютерный форум CyberForum.ru

високосные отрицательные года - C++

Восстановить пароль Регистрация
 
SSSprinter
0 / 0 / 0
Регистрация: 01.09.2011
Сообщений: 34
21.10.2012, 15:41     високосные отрицательные года #1
здравствуйте. у меня стоит задача, проверить образуют ли три введенные числа правильную дату (естественно год может быть отрицательным и високосным)
программа, которую я написал, работает для положительных годов, но вот с отрицательным и високосным для февраля проблема. я не понимаю за что можно зацепиться, какое условие написать.

вот как я делал (если год положительный): если
1) год делится на 4 на цело и не делится на 100, то год високосный
2) год делится на 4 и на 100 нацело, и не делится на 400, то год не високосный
3) год делится на 4 и на 100 нацело, и делится на 400, то год високосный
а как быть для отрицательных годов??? 0 года же ведь не было, и там сдвиг на 1, то есть -1,-5,-9 и так далее високосные.
помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.10.2012, 15:53     високосные отрицательные года #2
Если говорить строго, то это правило нельзя распространять на даты до 4 октября 1598 года. А до 45 года до нашей эры вообще не было високосных годов.

Так что спрашивайте у того, кому эта программа нужна, что делать с этими календарями.
SSSprinter
0 / 0 / 0
Регистрация: 01.09.2011
Сообщений: 34
21.10.2012, 16:10  [ТС]     високосные отрицательные года #3
~OhMyGodSoLong~, ок, буду у препода спрашивать. просто я не понимаю какую там закономерность задать, кроме как то что -4, но этим не как не воспользоваться.
код свой не хочу скидывать, потому что эти задания из года в год повторяются.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.10.2012, 16:18     високосные отрицательные года #4
Не, ну можно сделать просто и тупо:
C++
1
2
3
4
5
6
7
bool isLeap(int year)
{
    if (year < 0) {
        year = -year - 1;
    }
    // дальше обычная проверка year на високосность
}
Вопрос только в том, насколько это адекватно реальности. Григорианский календарь ведь действует только с той даты.
SSSprinter
0 / 0 / 0
Регистрация: 01.09.2011
Сообщений: 34
21.10.2012, 17:08  [ТС]     високосные отрицательные года #5
~OhMyGodSoLong~, кстати да, я и не знал что так можно. попробую потом. ну вот так вот препод сказал, что отрицательные года тоже нужны.

Добавлено через 31 минуту
~OhMyGodSoLong~,
только сдвиг наверно на -3 должен быть

Добавлено через 11 минут
на -3 сделал поправку на -3 заработало! вроде правильно все.
спасибо еще раз
Yandex
Объявления
21.10.2012, 17:08     високосные отрицательные года
Ответ Создать тему
Опции темы

Текущее время: 11:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru