Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Задачи для начинающих

16.02.21 19:05
Re: Задачи для начинающих
 
AlexNek патриот
AlexNek
в ответ Murr 16.02.21 15:41
тебе еще накидают методик оценки/мотивации/стимулирования

Зачем? Этот аспект мне интересен меньше всего. А уж на форуме почти бессмыслен.


Меня больше интересует, как можно получить решение понятное начинающим, которое не будет "страшным".

Для светофора с кнопочкой такого пока не нахожу смущ Без кнопочки еще как то можно.

Но опять таки, размещать всё в одном классе совершенно не хочется, так что хотя бы один простой класс добавить нужно.

В этом случае всё управление лампочками будет там. Это позволит убрать хотя бы ошибки переключения, когда горят красный и зелёный одновременно. И уж точно гарантировать что при включенном зеленом для авто не будет зеленого для пешеходов.

В этом случае приходим к довольно простой главной функции

        private static void Main(string[] args)
        {
            CombinedTrafficLight trafficLight = new CombinedTrafficLight();
            InitTraceState();
            while (true)
            {
                trafficLight.DisableAutoTraffic();
                trafficLight.EnablePedestrianTraffic();
                Delay(RedLightTimeMs);
                TraceState(trafficLight);

                trafficLight.EnableLightSwitch();
                trafficLight.DisablePedestrianTraffic();
                Delay(YellowLightTimeMs);
                TraceState(trafficLight);

                trafficLight.EnableAutoTraffic();
                Delay(GreenLightTimeMs);
                TraceState(trafficLight);

                trafficLight.EnableLightSwitch();
                Delay(YellowLightTimeMs);
                TraceState(trafficLight);
            }
        }

результат получается таким

+------+-----+-----+
|Pdestr|Auto |Delay|
|  R G |R Y G| [s] |
|------+-----+-----|
|    * |*    |3.094|
|  *   |  *  |1.015|
|  *   |    *|4.000|
|  *   |  *  |1.016|
|    * |*    |3.000|
|  *   |  *  |1.016|
|  *   |    *|4.015|
|  *   |  *  |1.016|
|    * |*    |3.000|
 

Перейти на