Переходим дорогу вслепую

  • 3
  • Недоступна
Допустим, мы точно знаем, что в начале каждого часа на нашем светофоре в течение 3 минут горит зелёный, потом минуту — жёлтый, и ещё минуту — красный свет, а затем всё повторяется. Наша программа должна определить, какой свет горит сейчас («сейчас» — это некое вещественное число, определяющееся временем в минутах, прошедших с начала очередного часа).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (285)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Дмитрий5 уровень
позавчера, 13:28
Долго думал над задачей. Если кто не может написать посмотрите на какие последние цифры заканчиваются ЦЕЛЫЕ минуты определенный цвета( желтый к примеру только на 3 и 8, то есть он загорается 13, 23, 28, 58). Так задача решается всего в два If
Бейбарыс4 уровень, Алматы
позавчера, 15:50
а как это синтаксически оформлять?
Дмитрий5 уровень
вчера, 12:09
(((t>=3) & (t<4))|((t>=8) & (t<9))) то есть мы ищем лежит ли наше вводимое число в данных промежутках ( в данном случае если лежит то это будет желтый сигнал!).
Roman4 уровень
15 января, 11:51
Подскажите плз, чет я совсем не догоняю. Программа работает, и выводит на экран правильные цвета в зависимости от введенного числа. System.out.println("зелёный"); System.out.println("жёлтый"); System.out.println("красный"); Но задачу не защитывает. из за этих пунктов Если горит зелёный цвет, необходимо вывести текст: "зелёный" Если горит жёлтый цвет, необходимо вывести текст: "жёлтый" Если горит красный цвет, необходимо вывести текст: "красный" Может кто уже сделал эту задачу, может глянуть мой код? з.ы. Спасибо)
Андрей Зуйков4 уровень, Санкт-Петербург
вчера, 22:21
точно не знаю что помогло, но я поменял тип числа с float на double и использовал остаток от деления, с этими изменениями задача прошла
Владимир6 уровень
4 января, 21:12
Используйте double вместо float, а то глючит
Kos5 уровень, Москва
6 января, 01:49
Благодарю)
Alexey Yagudin6 уровень, Санкт-Петербург
6 января, 20:23
Да, странно. С флоат мне зелёный цвет браковал, остальные, типа, норм. С дабл заработало... загадка...
Dennis8 уровень, Москва
2 января, 22:33
Хреново быть гуманитарием. Полтора часа времени. Проклял всё. Поскондалил с женой. Решил. Подсказываю другим гуманитариям. Первые три цикла они самые очевидные. И чтобы написать ещё следующие три цикла, поиграйте с делением по модулю на цифры в диапазоне от 5 до 10 и посмотрите какие результаты получаются и следующие три цикла с оператором && для Вас станут тоже очевидными =) Удачи.
29 декабря 2018, 11:05
непонятно, почему с типом данных float выдает ошибку при проверке, хотя и работает. Пришлось поменять на double.
Maxim Voychuk5 уровень, Киев
5 января, 13:04
тоже так - 11 попыток, всё работает, но проверку не прошло пока float не заменил на double. Hепонятно - какая ему разница?
Максим Пономарев10 уровень, Москва
27 декабря 2018, 02:44
Какая-то фигня, сначала решил задачу не используя остаток от деления %, привел время к отрезку в 5 минут через if else используя дополнительно перевод времени в инт с отбрасыванием дробной части.
double t = Double.parseDouble(s);
int t1 = (int) t;
double a;
if (t>10) a = t - t1/10*10; else {if (t > 5) a = t - 5 ; else a = t;}
Валидатор ругался и говорил что только зеленый работает правильно, желтый и красный не работают, хотя я пронал все граничные варианты в IDE и по паре промежуточных и все работало. Заменил конструкцию с if на
double a = t%5;
и валидатор принял решение. Вывод программы при этом нисколько не поменялся, и хотя первый вариант громоздкий и не оптимальный, поидее он тоже должен был быть засчитан, может кто нибудь обьяснить почему он не принимался?
Влад7 уровень
26 декабря 2018, 14:33
А причем тут циклы? Лекция посвящена операторам if else. Я думаю вот именно в этом и фишка, чтобы обойтись только этим инструментом.
Дмитрий8 уровень
19 декабря 2018, 13:25
Мое решение без оператора %. Только цикл for и 3 if-else.
Bogdan Potapenko5 уровень
9 декабря 2018, 16:25
В тесте ошибка. Не верифицирует
time %= time;
При этом показывает, что ошибка в выводимых значениях. Кучу раз перепроверил, что в словах нет опечаток. Бред.
Сергей С4 уровень, Минск
4 января, 21:06
А какой математический смысл написанного тобой выражения? Подумай...
Svetalana8 уровень
9 декабря 2018, 00:49
Я вводила double, чтоб в дальнейшем можно было различные числа вводить(не только 2,5, но и 2,7 тоже работает). Далее использовала for ((int i = 0; i < 60; i=i+5) - зеленый, for (int i = 3; i<60; i = i+5) - желтый, for (int i = 4; i<60; i = i+5)- красный . Далее под каждым цветом if (a >= i & a < (i + 3)) для зеленого, if (a>=i & a<(i+1) ) для красного и желтого. Решение получилось в 3 цикла for с каждым своим собственным if.
Bogdan Potapenko5 уровень
9 декабря 2018, 16:25
Не очень эффективно =)
DjAID8 уровень, Санкт-Петербург
10 декабря 2018, 10:26
while (color >= 5) color = color - 5; при этом понимаем что: color >=0 & color < 3 - зеленый color >=3 & color < 4 - желтый color >=4 & color < 5 - красный получается вообще пофиг сколько минут пройдет с начала часа - эти пять минут все равно будут повторяться
Alyaska Kotova7 уровень, Москва
14 декабря 2018, 22:08
достаточно одного цикла с тремя if)
Yulia Kosolapova8 уровень, Великий Новгород
3 января, 21:08
При этом программа ругается и пишет, что задан бесконечный цикл
Дмитрий Лукьяненко8 уровень, Харьков
10 января, 19:18
достаточно 0 циклов и 2 ифа =)