PDA

Просмотр полной версии : Определение високосного года


undeddy
11.02.2006, 18:49
В общем, надо создать функцию, определяющую, високосный сейчас год, или нет.

Nirva
12.02.2006, 08:04
сейчас - не високосный, это я тебе точно говорю.

undeddy
12.02.2006, 11:14
Все, решение уже нашел.

Crazy
12.02.2006, 12:55
Все, решение уже нашел.

Правила корректного поведения на форуме ракомендуют в таких случаях сообщать, какое именно решение было найдено -- для тех, кто впоследствии будет пользоваться поиском...

undeddy
12.02.2006, 14:27
Можно так:
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);
}

Crazy
12.02.2006, 15:31
Понятно. Классическое неправильное решение -- ты пребываешь в стандартном заблуждении, что каждый 4-й год является високосным.

Правильное решение: используя Date создать дату для 29.02.xxxx, где xxxx -- интересующий год. Затем у полученного объекта проверить номер месяца. Если все еще февраль (1), то год високосный. Если уже март (2) -- значит год не високосный и класс Date произвел коррекцию, преобразовав дату в 1 марта.

Илья К
12.02.2006, 16:28
Понятно. Классическое неправильное решение -- ты пребываешь в стандартном заблуждении, что каждый 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.

Crazy
12.02.2006, 17:24
Проще всего -- описанным мной способом. Но если уж и проверять на кратность -- то явно не с помощью регулярных выражений.

undeddy
12.02.2006, 19:51
Проще всего -- описанным мной способом. Но если уж и проверять на кратность -- то явно не с помощью регулярных выражений.

А как бы ты проверил число на кратность?

Илья К
12.02.2006, 20:14
Можно так: делить на 4 (в цикле) и, пока результат деления больше 4, проверять, целое ли число.

Crazy
12.02.2006, 20:14
А как бы ты проверил число на кратность?

Используя штатный способ, применяемый для этих целей: %

Crazy
12.02.2006, 20:18
Можно так: делить на 4 (в цикле) и, пока результат деления больше 4, проверять, целое ли число.

Внимание, вопрос: какова вероятность того, что если число кратно 4, то нам потребуется более 1 итерации?

Илья К
12.02.2006, 20:34
Внимание, вопрос: какова вероятность того, что если число кратно 4, то нам потребуется более 1 итерации?прав :)