Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Написание кода на с++

Тимофей Заикин Ученик (52), на голосовании 1 день назад
Работа светофора для водителей запрограммирована следующим образом: начиная с начала каждого часа, в течение трёх минут горит зелёный сигнал, затем в течение одной минуты — жёлтый, в течение двух минут — красный, в течение трёх минут — опять зелёный и т.д.

Напиши программу, которая определит, какого цвета сигнал горит для водителей в данный момент, если с начала очередного часа прошло time минут

Формат входных данных
Одно целое число time - время в минутах, прошедшее с начала очередного часа

Формат выходных данных
Одна из фраз: "RED", "YELLOW" или "GREEN" для красного, желтого или зелёного цвета светофора
Голосование за лучший ответ
Рустам Абдрашитов Мудрец (10299) 1 месяц назад
На
 from colorama import init, Fore, Style 

def traffic_light_color(time):
cycle_time = time % 6
if 0 <= cycle_time < 3:
return "GREEN", Fore.GREEN
elif cycle_time == 3:
return "YELLOW", Fore.YELLOW
else:
return "RED", Fore.RED

def display_traffic_light_color(time):
color_name, color_code = traffic_light_color(time)
print(f"{Style.BRIGHT}Светофор сейчас показывает: {color_code}{color_name}{Style.RESET_ALL}\n")

def prompt_user_input():
while True:
time_input = input("Введите количество минут, прошедших с начала часа (0-59) или 'q' для выхода: ")
if time_input.lower() == 'q':
return None
try:
time = int(time_input)
if 0 <= time < 60:
return time
else:
print(Fore.RED + "Ошибка: Введите число от 0 до 59.")
except ValueError:
print(Fore.RED + "Ошибка: Введите корректное целое число.")

def main():
init(autoreset=True)
print("\nСистема управления светофором\n")
while True:
time = prompt_user_input()
if time is None:
print("\nВыход из программы. До свидания!")
break
display_traffic_light_color(time)

if __name__ == "__main__":
main()
Иван Сигаев Искусственный Интеллект (155110) 1 месяц назад
Примерно так

string program[]={"green","green","green","yellow","red","red"};
cin>>time;cout<<program[time%6];
kaiu Высший разум (118731) 1 месяц назад
Прикольно, что оставлен ответ который к с++ не имеет отношения, но Тимофей так считает.
0-2 зеленый, 3 желтый, 4,5 красный, ну а далее повторяется цикл из 6 минут
Банально time%6 как и сказано Иван Сигаев,
так как time%6 дает всегда ответ от 0 до 5 и как раз то, что перечислил выше.
Как вариант, можно и так тоже:
#include <iostream>
using namespace std;

int main() {
int time;
cin >> time;
switch( time%6 ) {
case 0: case 1: case 2:
cout << "GREEN";
break;
case 3:
cout << "YELLOW";
break;
case 4: case 5:
cout << "RED";
break;
}

return 0;
}
Андрей Высший разум (464982) 1 месяц назад
Ну вот скрыл ты ответ Ивана Сигаева, дающий короткое правильное решение на С++ - тебе полегчало?

Или ты настолько неуч, что не в состоянии воспроизвести стандартную обвязку, которую "ты" многократно писал в каждом "своём" домашнем задании?

Ещё один способ решения:

string t[] = {"GREEN", "YELLOW", "RED"};
int time;
cin >> time;
cout << t[(time % 6 >= 3) + (time % 6 >= 4)];
Похожие вопросы