Допустим, мы точно знаем, что в начале каждого часа на нашем светофоре в течение 3 минут горит зелёный, потом минуту — жёлтый, и ещё минуту — красный свет, а затем всё повторяется. Наша программа должна определить, какой свет горит сейчас («сейчас» — это некое вещественное число, определяющееся временем в минутах, прошедших с начала очередного часа).
Переходим дорогу вслепую
- 8
Недоступна
Комментарии (756)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Oleg
16 ноября 2022, 05:26
Вот настоящее извращение)) Сделал так. По факту при компиляции все работает правильно, и ввод и цвет на выходе. Ошибок нет. Вопрос почему Javarush не принимает такое решение? Кто подскажет?)))
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String input = reader.readLine();
Double in = Double.parseDouble(input);
//int in = Integer.parseInt(input);
if (in >= 3 & in < 4 |
in >= 8 & in < 9 |
in >= 13 & in < 14 |
in >= 18 & in < 19 |
in >= 23 & in < 24 |
in >= 28 & in < 29 |
in >= 33 & in < 34 |
in >= 38 & in < 39 |
in >= 43 & in < 44 |
in >= 48 & in < 49 |
in >= 53 & in < 54 |
in >= 58 & in < 59 ){
System.out.println("жёлтый");
} if (in >= 4 & in < 5 |
in >= 9 & in < 10 |
in >= 14 & in < 15 |
in >= 19 & in < 20 |
in >= 24 & in < 25 |
in >= 29 & in < 30 |
in >= 34 & in < 35 |
in >= 39 & in < 40 |
in >= 44 & in < 45 |
in >= 49 & in < 50 |
in >= 54 & in < 55 |
in >= 59 & in < 60 ){
System.out.println("красный");
}if (in >= 0 & in < 3 |
in >= 5 & in < 8|
in >= 10 & in < 13 |
in >= 15 & in < 18 |
in >= 20 & in < 23 |
in >= 25 & in < 28 |
in >= 30 & in < 33 |
in
+1
Retr0
1 декабря 2022, 13:16
тут походу принимает только тот код, когда есть остаток на деление
+1
Игорь Черных
5 июля 2022, 02:41
Светофор
Как же много времени я убил на то, чтобы понять с какого * при делении на 5, мы получаем числа в диапазоне от 0 до 5...Разверну:
Выражение:
time = time % 5;
при 58 минутах для меня имело значение 11.6...соответственно 11 циклов и "десятичный остаток от деления" 6. Эмпирическим путем выяснил, что "% 5" работает не так. Берем 58 минут и делим на 5, целой частью здесь будет завершенное кол-во циклов - 11, остатком же то, что не поделилось, т.е. 58-55 = 3...В общем и целом, 3/5 не надо превращать в 0.6
0
John Black
9 апреля 2022, 02:06
Я сделал так. Вроде все работает и мое решение приняла программа. Но не уверен что так правильно.![]()

+1
Skifan
18 февраля 2022, 03:18
Задача больше из математики, чем прогерства
+1
Denis Eliseev
17 января 2022, 16:25
Логика такая:
наша переменна = (введенное число) вычисляем остаток от деления на 5
если переменная < 3 , то "зеленый"
если переменная < 4 , то "желтый"
если переменная < 5 , то "красный"
+4
Pavel Mordovin
18 марта 2022, 06:26
Спасибо! Подскажите для дебила. Почему надо вычислить остаток от деления именно на 5? Почему не 4 или 6?:)
0
Pavel Mordovin
18 марта 2022, 08:59
5 - в течении трёх минут + два раза по одной минуте.
5 - время цикла светофора
вот оно что
+2
Sara Kerrigan
13 января 2022, 17:10
Не пойму логику...
если сказано, что зелёный горит 3 минуты, это получается, что первая минута начинает считаться
с 0.0
вторая с 1.0
третья с 2.0
?
+1
Denis Eliseev
17 января 2022, 16:26
да, первая с 0 до 1, вторая с 1 до 2, третья с 2 до 3, и т д
+1
Elidriel
21 ноября 2021, 17:06
Извращение, но тоже пойдет :)
+2
Влад
3 января 2022, 13:15
Хороший подход
0
Vitevii
27 октября 2021, 09:12
Не пойму допустим t введут с клавиатуры 37.5 по идее должен быть зеленый, но если по решению посчитать получается 32.5/5 = 7.5 ни целое ни остаток ни как не меньше 3 или я чего-то не понимаю?
+1
Pavel Mordovin
18 марта 2022, 06:27
Почему надо вычислить остаток от деления именно на 5?
Если найдётся время, объясните плиз
0
Pavel Mordovin
18 марта 2022, 07:24
два раза по одной минуте и один раз три минуты, вот и 5.
Всем спасибо!
0
Maksym-Andriy
19 сентября 2021, 20:39
Ещё проще, если кому интересно:
Scanner sc = new Scanner(System.in);
double t = sc.nextDouble() % 5;
System.out.println((t < 3 || t == 5)? "зелёный": t<4? "жёлтый": "красный");
+1
Влад Ворсин
13 июля 2021, 22:08
Просто 18 попыток, ито с 15 я просто уже зашел в комменты. Вот как надо было самому додуматься, что там надо на 5 делить? Просто жесть
0
Дмитрий Петров QA Automation Engineer в совкомбанк
25 сентября 2021, 14:21
На 5 делишь чтобы избавиться от полных циклов (зеленый 3 минуты, желтый 1 мин, красный 1 мин), Затем по остатку считаешь сколько прошло времени.
+1