Количество дней в году

  • 8
  • Недоступна
На планете Земля год длится 365 или 366 суток. Количество дней высчитывается по определенной формуле: високосным годом (366 суток) является год, который делится без остатка на 4 за исключением годов, которые кратны 100 и не кратны 400. Напишем программу, в которой выясним, високосный или обычный год ввёл пользователь с клавиатуры.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (426)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
DDAlex 4 уровень, Алматы
вчера, 16:05
Сам решил. Фуф. Сутки думал, обмозговывал. В начале думал через массив надо с последующим удалением элементов, но посмотрел материал на эту тему и увидел, что очень геморрно, тем более с массивами почти не работал ещё. В итоге вспомнил про операции сравнения и логические операции. В общем за часок накидал, вот так получилось: BufferedReader z = new BufferedReader(new InputStreamReader(System.in)); int x = 0; String s = z.readLine(); int a = Integer.parseInt(s); if ((a%400)==0 | (a%400)!=0 & (a%100)!=0 & (a%4)==0) x=366; else if ((a%400)!=0 & (a%100)==0 | (a%400)!=0 & (a%100)!=0 & (a%4)!=0) x=365; System.out.println("количество дней в году: " + x); PS: Единственное обидно, со второго раза засчитал программу валидатор. Сделал в начале с выводом фразы: "Введите год в формате ----".
Bombus 6 уровень, Москва
17 января, 19:53
Решил с третьего раза, получилось так: BufferedReader buff = new BufferedReader(new InputStreamReader(System.in)); String n = buff.readLine(); int i = Integer.parseInt(n); int a; if ((i % 400) == 0) a = 366; else if ( i % 4 == 0 && i % 100 != 0) a = 366; else a = 365; System.out.println("количество дней в году: " + a); Что интересно, когда написал второй просто "if " а не "else if", то программа выдавала неверный результат на вводе числа 3200. Так и не понял почему 🤯
iDSDDR 4 уровень
14 января, 14:18
сделал с 4 раза, строго следуя условию, но ошибся из-за = вместо ==
Iron Bigai 5 уровень
13 января, 16:49
Что значит ?знак
DDAlex 4 уровень, Алматы
вчера, 16:17
А ты его откуда тут взял? Почитай про тернарный оператор. Он разделяет выражение и значение если true.Например: переменная x = (выражение) ? значение if true : значение if false. Им можно заменить одноразовый if else
Кирилл 5 уровень, Миасс
10 января, 11:09
Решил вот так: if ((year % 400==0 && year % 100==0) || (year % 100 != 0 && year % 4==0)){
Антон 6 уровень, Сызрань
7 января, 20:52
Мне стало интересно. И вот полная версия определения високосного года. Может пригодится кому. P.S. за такой скрин понять и простить если чо))))
Yaroslaav 4 уровень, Яготин
3 января, 22:34
Більше часу витратив на те, що б зрозуміти саму задачу. В інтернеті знайшов короткий і чіткий опис високосного року "1) тот, который кратен 400, 2) тот, который кратен 4, но в тоже время не кратен 100."
Дмитрий 5 уровень
2 января, 14:21
Не особо долго думая над красотой и простотой кода, писал сразу по условию System.out.printf("количество дней в году: %d", (x %= 400) == 0 ? 366 : (x %= 100) == 0 ? 365 : (x %= 4) == 0 ? 366 : 365);
Dmitry economic security
29 декабря 2020, 19:05
вот понаписали комментов))...это конечно хорошо, но из-за них я час потерял. задача как предыдущие без всяких для 4 лвл неизвестных методов как я решил: if(year % 400 == 0){sout} else if(...){sout} else if(...){sout} else{sout} 4 условия по тз
Вова Борисюк 8 уровень, Минск
9 декабря 2020, 19:13
Что не так? Решает всё правильно, но решение не засчитывается.
Romanya 12 уровень, Санкт-Петербург
19 декабря 2020, 15:19
Форма вывода такая? (количество дней в году: x)