Предмет: Информатика, автор: TarasNestere

Разработать схему алгоритма работы объекта.

Входные данные с датчиков и сигналы представить

с помощью блока ручного ввода, выходные – блока дисплей.



Для автотранспорта размещен светофор с четырьмя состояниями: красный, желтый, зеленый, поворот.

Его принцип действия следующий:

30 секунд горит красный, затем 10 – желтый, 30 – зеленый, если есть автотранспорт, который собирается повернуть, поступает сигнал "4-й

состояние" и после 10 секунд работы зеленого включается поворот.

Отключение зеленого и поворота происходит одновременно.

язык С++
использовать ГОСТ 19.701-90

Ответы

Автор ответа: honvert
1

Ответ:

Схема алгоритма работы объекта (светофора) может выглядеть следующим образом:Инициализируем переменную, хранящую текущее состояние светофора (например, state), равной 1 (красный).В цикле выполняем следующее:

a. Если state = 1 (красный), то включаем красный свет и ждем 30 секунд. Затем увеличиваем state на 1.

b. Если state = 2 (желтый), то включаем желтый свет и ждем 10 секунд. Затем увеличиваем state на 1.

c. Если state = 3 (зеленый), то включаем зеленый свет. Проверяем, поступил ли сигнал "4-й состояние" (т.е. нужно ли включать поворот). Если нет, то ждем 30 секунд. Иначе, ждем 10 секунд и включаем поворот. Затем увеличиваем state на 1.

d. Если state = 4 (поворот), то ждем 10 секунд и выключаем поворот. Затем устанавливаем state = 1 (красный).

#include <iostream>

#include <chrono>

#include <thread>

int main()

{

   // Инициализируем переменную текущего состояния светофора

   int state = 1;

   while (true)

   {

       // Обрабатываем текущее состояние светофора

       switch (state)

       {

       case 1:

           // Включаем красный свет

           std::cout << "Red light" << std::endl;

           // Ждем 30 секунд

           std::this_thread::sleep_for(std::chrono::seconds(30));

           // Увеличиваем state на 1

           state++;

           break;

       case 2:

           // Включаем желтый свет

           std::cout << "Yellow light" << std::endl;

           // Ждем 10 секунд

           std::this_thread::sleep_for(std::chrono::seconds(10));

           // Увеличиваем state на 1

           state++;

           break;

       case 3:

           // Включаем зеленый свет

           std::cout << "Green light" << std::endl;

           // Проверяем, поступил ли сигнал "4-й состояние"

           bool signal = false;

           // В этом месте нужно будет реализовать проверку сигнала

           // В данном примере мы просто устанавливаем signal = true,

           // чтобы имитировать ситуацию, когда сигнал посту

if (signal)

{

// Ждем 10 секунд

std::this_thread::sleep_for(std::chrono::seconds(10));

// Включаем поворот

std::cout << "Turn" << std::endl;

// Увеличиваем state на 1

state++;

}

else

{

// Ждем 30 секунд

std::this_thread::sleep_for(std::chrono::seconds(30));

// Увеличиваем state на 1

state++;

}

break;

case 4:

// Ждем 10 секунд

std::this_thread::sleep_for(std::chrono::seconds(10));

// Выключаем поворот

std::cout << "Turn off" << std::endl;

// Устанавливаем state = 1 (красный)

state = 1;

break;

}

}

return 0;

}


TarasNestere: спасибо, буду разбираться, чтоб у самого тоже так вышло. а можно в виде блок схем? (начало, конец, действие (в прямоугльнике), в ромбе развевление
Похожие вопросы
Предмет: Геометрия, автор: asuslova010
Предмет: Математика, автор: zejnullazantemir
Предмет: Алгебра, автор: nanaka200660