Условие программы: Ввести с клавиатуры год, определить количество дней в году. Результат вывести на экран в следующем виде: "количество дней в году: x", где х - 366 для високосными года, х - 365 для обычного года. Подсказка: В високосном году - 366 дней, тогда как в обычном - 365. Високосным годом является каждый четвёртый год, за исключением столетий, которые не кратны 400. Так, годы 1700, 1800 и 1900 не являются високосными, так как они кратны 100 и не кратны 400. Годы 1600 и 2000 — високосные, так как они кратны 100 и кратны 400. Годы 2100, 2200 и 2300 — невисокосные.

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    int year = Integer.parseInt(reader.readLine());

    if (year % 4 == 0 && (year/100) % 4 == 0) {
        System.out.println("количество дней в году: 366");
    } else {
        System.out.println("количество дней в году: 365");
    }

Перепробовал множество входных данных. По условиям все проходит. Тест не пропускает.

задан 14 Окт '16, 14:29

SirMadSquirrel's gravatar image

SirMadSquirrel
1
одобрено: 0%

закрыто 13 Сен, 13:31

AndyRad's gravatar image

AndyRad
13.1k29

Вопрос был закрыт по следующей причине: "Problem is not reproducible or outdated" AndyRad 13 Сен, 13:31


Эти тоже проверяли?

Годы 2100, 2200 и 2300 — невисокосные.

ссылка

опубликован 14 Окт '16, 14:40

Yuri_Dnepr's gravatar image

Yuri_Dnepr
5.8k7
одобрено: 51%

Да, тоже проверенны. Нашел даже похожий топик Якобы уже исправлен и рабочий : Хотя по условию он 2016 уже не проходит, т.к. 2016%400=0,4

if ( (year % 4 == 0) && (year % 400 == 0) ) { x = 366; System.out.println("количество дней в году: " + x); } else if ( (year % 4 == 0) && (year % 100 != 0) ) { x = 366; System.out.println("количество дней в году: " + x); } else { x = 365; System.out.println("количество дней в году: " + x); }

т.е. Если взять год 920 как был в комментах в том топе, он проходит не как високосник, но если мы возьмем 924 год, то он становится високосником : Может я конечно что-то в високосных годах недопонял

ссылка

опубликован 14 Окт '16, 14:55

SirMadSquirrel's gravatar image

SirMadSquirrel
1
одобрено: 0%

изменено 14 Окт '16, 15:05

--

(14 Окт '16, 15:09) Yuri_Dnepr

Дайте возможность залить на форум изображение - докажу ;)

ссылка

опубликован 14 Окт '16, 15:14

SirMadSquirrel's gravatar image

SirMadSquirrel
1
одобрено: 0%

А должно быть 366 и 366

(14 Окт '16, 15:22) Yuri_Dnepr

365 и 365

(14 Окт '16, 15:21) SirMadSquirrel

Да с 2100-м был не прав, проверьте 2136 или 104

(14 Окт '16, 15:17) Yuri_Dnepr

тут был код который SirMadSquirrel нашел и опубликовал в своем втором комментарии

такой вариант полностью рабочий и сервер его принял

ссылка

опубликован 14 Окт '16, 15:19

Esolokka's gravatar image

Esolokka
112
одобрено: 0%

изменено 14 Окт '16, 15:26

высокосный год этот тот год, который КРАТНЫЙ 4 КРОМЕ столетий ( 00 в конце) которые не делятся на 400

(14 Окт '16, 15:29) Esolokka

потому что 924 высокосный год

(14 Окт '16, 15:27) Esolokka

Так а почему он его принимает? :\

year = 924 ЕСЛИ 924 % 4 == 0(ИСТИНА) И 920 % 400 == 0(ЛОЖЬ) --ЕСЛИ 924 % 4 == 0(ИСТИНА) И 924 % 100 != 0(ИСТИНА) ----ТОГДА 366 // Хотя по условию мы понимаем что это не високосный год :\

(14 Окт '16, 15:26) SirMadSquirrel

я повторил то, что он сам нашел, тем более тут надо еще допилить код

(14 Окт '16, 15:23) Esolokka

Не стоит выкладывать рабочие решения. Человек должен сам до него доходить.

(14 Окт '16, 15:23) Yuri_Dnepr

Про 2136 и 104 я откомментил коммент ) 365 и 365 Я конечно могу внести тот, который "Рабочий", но пока не вижу в нем ничего рабочего Хочу понять где косяк ;)

ссылка

опубликован 14 Окт '16, 15:30

SirMadSquirrel's gravatar image

SirMadSquirrel
1
одобрено: 0%

код:

    hateYear(2100);
    hateYear(2200);
    hateYear(2300);
    hateYear(920);
    hateYear(924);
    hateYear(2136);
    hateYear(104);
    System.out.println();
    hateYear(824);
    hateYear(2016);
    hateYear(2012);

}

public static void hateYear(int year) {
    if (year % 4 == 0 && (year/100) % 4 == 0) {
        System.out.println("количество дней в году: 366");
    } else {
        System.out.println("количество дней в году: 365");
    }
}

Результат:

количество дней в году: 365 количество дней в году: 365 количество дней в году: 365 количество дней в году: 365 количество дней в году: 365 количество дней в году: 365 количество дней в году: 365

количество дней в году: 366 количество дней в году: 366 количество дней в году: 366

ссылка

опубликован 14 Окт '16, 15:33

SirMadSquirrel's gravatar image

SirMadSquirrel
1
одобрено: 0%

косяк в том что у вас считает года только до 100, а дальше условие (year/100) % 4 == 0 всегда будет False

ссылка

опубликован 14 Окт '16, 15:34

Esolokka's gravatar image

Esolokka
112
одобрено: 0%

Ладно, вопрос в другом: 924 год високосный?

ссылка

опубликован 14 Окт '16, 15:41

SirMadSquirrel's gravatar image

SirMadSquirrel
1
одобрено: 0%

Год не является високосным, если он не кратен 4, либо он кратен 100, но при этом не кратен 400.
924%4 = 0 И 924%100 = 24
Какой он по вашему?

2136%4 = 0 И 2136%100 = 36
104%4 = 0 И 104%100 = 0
И эти тоже високосные

(14 Окт '16, 15:43) Yuri_Dnepr

а вообще вы не учли что year int следите за ходом мысли

year = 120;
year/100 не будет 1.2, а будет равно 1
и поэтому 
(year/100) % 4 не будет 0

и все условие (year % 4 == 0 && (year/100) % 4 == 0) станет false b выведет 365 хотя 120 высокосный

ссылка

опубликован 14 Окт '16, 15:43

Esolokka's gravatar image

Esolokka
112
одобрено: 0%

изменено 14 Окт '16, 15:44

Прошу конечно прощения, НО по Вашей подсказке к задаче эти года являются не високосными. По прочитанным топикам людям пришлось ориентироваться на ПОЛНУЮ статью википедии. Теперь я понял как считываются високосные года. Спасибо большое за разбор задачи ;)

ссылка

опубликован 14 Окт '16, 15:45

SirMadSquirrel's gravatar image

SirMadSquirrel
1
одобрено: 0%

TY! Задача решена. Всем спасибо, бурной ночи всем )

(14 Окт '16, 15:58) SirMadSquirrel

Прошу конечно прощения, НО по Вашей подсказке к задаче

подсказки не наши и не ваши. Пишите support@javarush.ru

P.S. и не стоит каждый раз создавать новый ответ, справа есть кнопка комментарий пользуйтесь ей.

(14 Окт '16, 15:51) Yuri_Dnepr

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×542
×269
×41

Задан: 14 Окт '16, 14:29

Просмотров: 400 раз

Отредактирован: 13 Сен, 13:31