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

  • 3
  • Недоступна
Допустим, мы точно знаем, что в начале каждого часа на нашем светофоре в течение 3 минут горит зелёный, потом минуту — жёлтый, и ещё минуту — красный свет, а затем всё повторяется. Наша программа должна определить, какой свет горит сейчас («сейчас» — это некое вещественное число, определяющееся временем в минутах, прошедших с начала очередного часа).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (287)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
shevas4 уровень
позавчера, 04:16
задача о светофорах легко решается и без остатка на деления циклом: проверяем какой цвет в интервале от 0 до 5 и если не подошло число, ко всем переменным добавляем +5 и так пока не найдем нужное нам значение. Ибо когда я решал эту задачу понятия не имел ни о каком остатке от деления))).
Deonis Shurakov4 уровень, Москва
четверг, 12:08
Всё, я кажется сам допёр: 3 mod 5 будет 3, от 2х соответственно 2., таким образом, мы все-равно с первым пяти минутным циклом остаемся.
Deonis Shurakov4 уровень, Москва
четверг, 11:56
Объясните, как работает работает решение задачи, при использовании остатка от делении, в том случае, когда мы задаем значения меньше 5.
Eugen6 уровень, Могилев
8 мая, 20:45
ошибка, тип float не воспринимается как вещественный
Pavel Ponomarev4 уровень
вчера, 08:41
Это странно, float тоже floating-point type. Но их отличия не должны по идее влиять на влидацию. FYI: 1) double имеет в два раза большую разрядность(64-bit), чем float (32-bit) и, соответственно, большую точность (в double вмещается больше знаков после запятой). 2) Но при этом double в 2 раза более дорогой - резервирует 8 байт памяти для переменной, против 4 байта у float.
finetyro15 уровень
5 мая, 16:34
Обращайте внимание на то, что просят ввести вещественное число (от этого границы и пляшут). Ну а так, если честно, с точки зрения математики - это неправильно. Почему? Потому что, например, 2.10 и 2.25 в корне отличаются, ведь речь о минутах, а дробная часть минуты - это секунды? Если так, тогда не от 0 до 3 зелёный, а от 0 до 0.60*3. Но это мелочи. Задача понравилась)
IceBerg32 уровень, Днепр
11 мая, 15:57
Не соглашусь, дробная часть минуты - это просто дробная часть минуты, о секундах речи не идёт.
Виталий Бураков7 уровень, Москва
29 апреля, 06:03
А как сделать чтоб можно было сразу несколько значений ввести и тебе выдало сразу несколько ответов. Догадываюсь что нужно считывать данные прямо в условии (цикле).
Григорий4 уровень, Москва
3 мая, 08:20
просто создай вторую переменную на ввод)
Murzin Vitaliy8 уровень
24 апреля, 07:58
Все работает при запуске, но не проходит тест, пишет про ошибку зелёного цвета.
Руслан Руслан6 уровень, Одесса
24 апреля, 07:31
Подскажите , что не так с моим кодом?
GigaMax12 уровень
21 апреля, 18:08
Странно, у меня решение правильное, а валидацию не проходило пока переменные вместо float сделал double. Будьте внимательны)
Сергей4 уровень, Санкт-Петербург
22 апреля, 16:22
аналогично
Margarita Evseeva4 уровень, Санкт-Петербург
17 апреля, 07:26
С данной конструкцией t = t % 5; проверку задача прошла. Но объясните пжл как это работает, на примере ввода цифры 7? t = 7 % 5 Остаток 4 Почему Светофор зеленый, если должен быть красный и проверку проходит так?
Павел7 уровень, Москва
17 апреля, 10:51
в начале каждого часа в течение трех минут горит зелёный сигнал, затем в течение одной минуты - жёлтый, а потом в течение одной минуты - красный, затем опять зелёный горит три минуты и т. д. Конструкция "t = t % 5" (обусловлена циклом работы светофора в течение 5 минут с начала нового часа). Этим мы "отсекаем" все пройденные циклы и получаем время (остаток от деления), которое принимаем во внимание. Т.е. работаем с остатком от деления. Например, прошло 52 минуты, соответственно t = t % 5 (остаток от деления = 2 минуты). 52 / 5 = 10 целых кругов и остаток от деления = 2, с ним и работаем. Это выражение "t = t % 5" идёт до условий.
Margarita Evseeva4 уровень, Санкт-Петербург
17 апреля, 15:20
Объясните пжл на примере 7 минут
Павел7 уровень, Москва
18 апреля, 07:27
Например, заданный цикл не 5 минут, а 7.., как вы предлагаете. Например, прошло 54 минуты с начала часа, соответственно t = t % 7 (= 54 / 7 = получаем целое число - 7: (7 * 7 = 49)). И остаток от деления, с которым работаем = 54 - 49 = 5 (остаток от деления). С ним и работаем в условиях. Рассматриваем цикл светофора в 7 минут, относительно полученного значения 5. Получаем = "ЖЁЛТЫЙ". -------- К примеру: работа светофора для пешеходов запрограммирована следующим образом: в начале каждого часа в течение 4 минут горит зелёный сигнал, затем в течение 2 минут - жёлтый, а потом в течение 1 минуты - красный, затем опять всё в рамках 7 минутного цикла.
Margarita Evseeva4 уровень, Санкт-Петербург
18 апреля, 10:01
Спасибо, вчера тоже села разобралась, поняла как это работает. До этого я неправильно понимала как работает деление с остатком %.
Павел7 уровень, Москва
18 апреля, 13:34
Я тоже очень долго "втыкал" в это ))