Допустим, мы точно знаем, что в начале каждого часа на нашем светофоре в течение 3 минут горит зелёный, потом минуту — жёлтый, и ещё минуту — красный свет, а затем всё повторяется. Наша программа должна определить, какой свет горит сейчас («сейчас» — это некое вещественное число, определяющееся временем в минутах, прошедших с начала очередного часа).
Переходим дорогу вслепую
- 8
Недоступна
Комментарии (753)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
John Black
9 апреля, 02:06
Я сделал так. Вроде все работает и мое решение приняла программа. Но не уверен что так правильно.![]()

0
Skifan
18 февраля, 03:18
Задача больше из математики, чем прогерства
0
Denis Eliseev
17 января, 16:25
Логика такая:
наша переменна = (введенное число) вычисляем остаток от деления на 5
если переменная < 3 , то "зеленый"
если переменная < 4 , то "желтый"
если переменная < 5 , то "красный"
+2
Pavel Mordovin
18 марта, 06:26
Спасибо! Подскажите для дебила. Почему надо вычислить остаток от деления именно на 5? Почему не 4 или 6?:)
0
Pavel Mordovin
18 марта, 08:59
5 - в течении трёх минут + два раза по одной минуте.
5 - время цикла светофора
вот оно что
0
Sara Kerrigan
13 января, 17:10
Не пойму логику...
если сказано, что зелёный горит 3 минуты, это получается, что первая минута начинает считаться
с 0.0
вторая с 1.0
третья с 2.0
?
+1
Denis Eliseev
17 января, 16:26
да, первая с 0 до 1, вторая с 1 до 2, третья с 2 до 3, и т д
+1
Elidriel
21 ноября 2021, 17:06
Извращение, но тоже пойдет :)
+2
Влад
3 января, 13:15
Хороший подход
0
Vitevii
27 октября 2021, 09:12
Не пойму допустим t введут с клавиатуры 37.5 по идее должен быть зеленый, но если по решению посчитать получается 32.5/5 = 7.5 ни целое ни остаток ни как не меньше 3 или я чего-то не понимаю?
+1
Pavel Mordovin
18 марта, 06:27
Почему надо вычислить остаток от деления именно на 5?
Если найдётся время, объясните плиз
0
Pavel Mordovin
18 марта, 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? "жёлтый": "красный");
0
Влад Ворсин
13 июля 2021, 22:08
Просто 18 попыток, ито с 15 я просто уже зашел в комменты. Вот как надо было самому додуматься, что там надо на 5 делить? Просто жесть
0
Дмитрий Петров QA Automation Engineer в совкомбанк
25 сентября 2021, 14:21
На 5 делишь чтобы избавиться от полных циклов (зеленый 3 минуты, желтый 1 мин, красный 1 мин), Затем по остатку считаешь сколько прошло времени.
0
Марина
20 июня 2021, 18:42
double x = Double.parseDouble(reader.readLine()) % 5;
if (x < 3) System.out.println("зелёный");
if (3 <= x && x < 4) System.out.println("жёлтый");
if (4 <= x && x < 5) System.out.println("красный");
+4
Дмитрий Петров QA Automation Engineer в совкомбанк
25 сентября 2021, 14:22
а где try catch, вдруг там строку введут или не введут ничего?
0
Марина
28 сентября 2021, 08:18
"вдруг" в условии не прописано, а на этом моменте трай-кетч ещё не учат
0
Кирилл Сырников
7 июня 2021, 16:57
Ребята, для тех кто отчаялся:
+8
Vitevii
27 октября 2021, 09:12
Не пойму допустим t введут с клавиатуры 37.5 по идее должен быть зеленый, но если по решению посчитать получается 32.5/5 = 7.5 ни целое ни остаток ни как не меньше 3 или я чего-то не понимаю?
0
Павел
30 ноября 2021, 08:32
Логика деления не такая: если 37.5 поделить на 5, то ответ получится 7 целых и остаток 2.5 и в коде t % 5 < 3 - берется только остаток. То есть сравнивается (в данном случае) 2.5 < 3.
+1
Александр
15 января, 08:56
и код выдает ошибку. А валидатор съел
0