@Lastle

Как сделать вывод чисел от 1900 до 2016 и выводил в консоль только високосные года?

Ребят, копаюсь в интернете не могу найти, если не сложно на путь истины.
Выводит в консоль все високосные годы от 1900 до 2016. Алгоритм определения високосного года найдите в интернете самостоятельно. Попробуйте усовершенствовать программу, чтобы она принимала начальный и конечный год от пользователя. Учтите ситуацию, когда начальный год оказался больше конечного.
  • Вопрос задан
  • 3941 просмотр
Решения вопроса 6
kawabanga
@kawabanga
Думайте головой!

Что значит високосный год? Значит что делится на 4, верно?

Какие образом можно получить все года в промежутке?
Легче - проверять каждый год(число из промежутка) и проверять есть ли остаток.
Чуть сложнее - вычислить первый год, и к нему добавлять 4 до тех пор пока не достигнете второго лимита.
Ответ написан
Chefranov
@Chefranov
Новичок
function checkYear(year) {
  var formula = (year & 3) == 0 && ((year % 25) != 0 || (year & 15) == 0);
  if(formula == true) {
    console.log('Год ' + year + ' высокосный');
  } else {
    console.log('Год ' + year + ' не высокосный');
  }
}

checkYear(2021);

Если захотите списком, то циклом пройдитесь
Ответ написан
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
function isLeapYear(year) {
     return year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);
}

for (let y = 1900; y <= 2016; y ++) isLeapYear(y) && console.log(y)
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const getLeapYears = (start, end) => Array
  .from({ length: end - start + 1 }, (n, i) => start + i)
  .filter(n => ((n % 100) && !(n % 4)) || !(n % 400));

console.log(getLeapYears(1888, 2099));
Ответ написан
Комментировать
Robur
@Robur
Знаю больше чем это необходимо
В чем именно у вас проблема? как вы пытались решить и что не работает? Покажите ваш код.
Если нужна помощь чтобы "порыться в интернете" - вот тут можно получить готовые ответы
https://lmgtfy.com/?q=%D0%BF%D0%BE%D0%BC%D0%BE%D1%...
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
вики: високосный год

let start = 1900, end = 2016

for (let y = start; y <= end; y++) {
  if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) {
    console.log(y)
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@13Magistr
Добрый вечер!
Я конечно мало что понимаю, но мне кажется проверка на остаток от деления на 100 и 400 лишняя, ведь в любом случае каждый 4 начиная от 0 високосный:

let start = prompt('Введите начальный год от 1900 до 2016!', 1900);
let end = prompt('Введите конечный год от 1900 до 2016!', 2016);

if (start > end) {
	alert('Начальный год больше конечного!');
}
for (let y = start; y <= end; y++) {
  if (y % 4 == 0) {
    console.log(y);
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы