Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Программа «светофор»


Автор: werta 20.4.2007, 17:28

Здравствуйте!


Дано - три объекта Shape и кнопка 

Работа светофора для пешеходов запрограммирована следующим образом:
в начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение двух минут - красный, в течение трех минут - опять зеленый и т.д. Дано вещественное число, означающее время в минутах, прошедшее с начала очередного часа. Определить, сигнал какого цвета горит для пешеходов в этот момент.

 smile 
Спасибо!!!
  

Автор: JusTalionis 16.8.2007, 20:58
Это простейшая задачка на развитие логического мышления. Решается так:
Код

' NUM - заданное число.
LB = 3          'длительность зеленого
LR = 2          'длительность красного
tC = LR + LB  'длительность полного периода смены цветов


t1 = int(NUM / tC)     'сколько целых периодов смены цветов произошло за время NUM
t2 = (NUM / tC) - t1   't2 - дробь, представляющая в какую часть очередного периода смены цветов попало окончание времени NUM

ChgClr = LB / tC   'момент смены цвета (в относительных частях периода)

'определение, в какую часть периода попадает момент NUM: в "красную" или "зеленую"
if t2 > ChgClr then print "Красный" else print "Зеленый"


приведенный код является примером, разьясняющим алгоритм. Он намеренно подробен для лучшей демонстрации шагов. 
На практике его можно ЗНАЧИТЕЛЬНО оптимизировать.

С применением функции MOD будет выглядеть так:
Код

LB=3
LR=2

if  (NUM MOD (LB+LR)) > LB then print "Красный" else print "Зеленый"



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)