Просмотр полной версии : Определение високосного года
В общем, надо создать функцию, определяющую, високосный сейчас год, или нет.
сейчас - не високосный, это я тебе точно говорю.
Все, решение уже нашел.
Правила корректного поведения на форуме ракомендуют в таких случаях сообщать, какое именно решение было найдено -- для тех, кто впоследствии будет пользоваться поиском...
Можно так:
function checkYear(year){
var number = year / 4;
var st_number = number.toString();
var per = /\./;
var f = st_number.match(per);
if(f == null) alert( year + " год - " + "високосный год");
else alert(year + " год - " + "невисокосный год")
}
А можно и по-другому, с введением класса:
function checkYear(year){
var number = year / 4;
var st_number = number.toString();
var per = /\./;
var f = st_number.match(per);
this.visokosny = (f == null);
}
Понятно. Классическое неправильное решение -- ты пребываешь в стандартном заблуждении, что каждый 4-й год является високосным.
Правильное решение: используя Date создать дату для 29.02.xxxx, где xxxx -- интересующий год. Затем у полученного объекта проверить номер месяца. Если все еще февраль (1), то год високосный. Если уже март (2) -- значит год не високосный и класс Date произвел коррекцию, преобразовав дату в 1 марта.
Понятно. Классическое неправильное решение -- ты пребываешь в стандартном заблуждении, что каждый 4-й год является високосным.Я тоже пребывал в этом заблуждении... :) Ты иммешь в виду годы, кратные 100, но не кратные 400? (http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%81%D0%BE%D0%BA%D0%BE%D1%81%D0%BD%D1%8B%D0%B9_%D0%B3%D0%BE%D0%B4)? Тогда бы я просто дополнил функцию условием -- проверкой на кратность 100 и 400.
Проще всего -- описанным мной способом. Но если уж и проверять на кратность -- то явно не с помощью регулярных выражений.
Проще всего -- описанным мной способом. Но если уж и проверять на кратность -- то явно не с помощью регулярных выражений.
А как бы ты проверил число на кратность?
Можно так: делить на 4 (в цикле) и, пока результат деления больше 4, проверять, целое ли число.
А как бы ты проверил число на кратность?
Используя штатный способ, применяемый для этих целей: %
Можно так: делить на 4 (в цикле) и, пока результат деления больше 4, проверять, целое ли число.
Внимание, вопрос: какова вероятность того, что если число кратно 4, то нам потребуется более 1 итерации?
Внимание, вопрос: какова вероятность того, что если число кратно 4, то нам потребуется более 1 итерации?прав :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.