Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/64: Рейтинг темы: голосов - 64, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
1

Светофор на перекрестке

22.11.2014, 19:05. Показов 12484. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, имитирующую работу светофоров (автомобильных и для пешеходов) на перекрестке. Должны быть настройки горения каждого цвета светофора для автомобилей. Программа на вход получает время, на выходе показывает состояние каждого светофора через заданное время.

Собственно, вопросы: 1) какое время тут имеется в виду? Мне нужно задавать таймер для горения каждого цвета?
Я не совсем понимаю 2) как должен выглядеть результат работы программы?
3) как должно отображаться это самое "горение цвета светофора"? Например так: для пути АВ - зеленый, для пути СD - красный?
4) нужно ли учитывать повороты вправо/влево? И еще светофоры для пешеходов, потому что про них вроде и есть в задании что-то, но не сказано, нужно ли описывать их состояние(хотя это уже не принципиально)?

Пожалуйста, ответьте, а то я в тупике( Не могу составить даже алгоритм действий((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2014, 19:05
Ответы с готовыми решениями:

Светофор: прямоугольник и три окружности. При нажатии нужной клавиши светофор должен загораться нужным светом
Ребят, подскажите пожалуйста, что не так в программе. Условие: Нарисуйте светофор: прямоугольник и...

Алгоритмом действий (Светофоры на перекрестке)
Нужно разработать систему светофоров для перекрестка (сам перекресток во вложенном изображении)....

Изобразить движение транспорта на перекрестке
Нужно сделать движение как на этой картинке все картинки в архиве и залил на хостинк картинок...

Модель движения транспорта на перекрестке со светофором C#
Помогите с написание программы на C#. Тема: модель движения транспорта на перекрестке со...

8
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
22.11.2014, 19:11 2
Программа должна быть консольной или оконной ?
0
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
22.11.2014, 19:21  [ТС] 3
Цитата Сообщение от egor2116 Посмотреть сообщение
Программа должна быть консольной или оконной ?
В задании не указанно, так что я без понятия, но с оконной пока не работали так что - скорее всего консольная.
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
22.11.2014, 19:29 4
Ну тогда
1) какое время тут имеется в виду? Мне нужно задавать таймер для горения каждого цвета?
Очевидно да, только таймер 1 и переключатель который будет переключать цвета и сбрасывать таймер
2) как должен выглядеть результат работы программы?
на выходе показывает состояние каждого светофора через заданное время.
3) как должно отображаться это самое "горение цвета светофора"? Например так: для пути АВ - зеленый, для пути СD - красный?
я думаю в виде статистики
4) нужно ли учитывать повороты вправо/влево? И еще светофоры для пешеходов, потому что про них вроде и есть в задании что-то, но не сказано, нужно ли описывать их состояние(хотя это уже не принципиально)?
Думаю нет.
0
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
22.11.2014, 19:33  [ТС] 5
Спасибо за ответы, значит мне нужно просто написать что-то вроде:

А-зеленый, В-красный,
***
через 30 секунд
(допустим)
***
А-красный, В-зеленый?

Или я не правильно поняла?

Цитата Сообщение от egor2116 Посмотреть сообщение
Очевидно да, только таймер 1 и переключатель который будет переключать цвета и сбрасывать таймер
А подскажите, пожалуйста, как этот самый таймер реализовать?
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
22.11.2014, 19:56 6
А подскажите, пожалуйста, как этот самый таймер реализовать?
Ну как нибудь так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <ctime>
 
void timer(int ms) 
{
    clock_t end_time = clock() + ms * CLOCKS_PER_SEC / 1000;  // время завершения 
    while (clock() < end_time) {}  // цикл ожидания времени 
    std::cout << "felt 5 seconds";  // сообщение о конце работы функции
}
 
int main (){
    timer(5000);  // 5 секунд
    return 0;
}
1
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
22.11.2014, 19:58  [ТС] 7
Цитата Сообщение от egor2116 Посмотреть сообщение
Ну как нибудь так
Спасибо большое, буду работать дальше)
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
22.11.2014, 20:05 8
Для учебных целей, думаю, хватит ctime. Сделайте класс "светофор".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//traffic light state
enum TLState {
   RED,
   GREEN,
   ORANGE //не знаю, нужен ли оранжевый
};
 
class TrafficLight {
public:
   TrafficLight();
   
   TLState getState() const;
   
   void setState( TLState newState );
 
   void toggle();
   
private:
   TLState state;
};
Далее можно создать вектор светофоров и по таймеру вызывать функцию toggle(), которая меняет состояние на противоположное.
1
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
23.11.2014, 16:41  [ТС] 9
Цитата Сообщение от Toshkarik Посмотреть сообщение
//не знаю, нужен ли оранжевый
для автомобилей, думаю, нужен))
Спасибо за совет)

Добавлено через 20 часов 30 минут
Перечитывала задание и темы форума и пришла идея. А что если тут нужно вручную вводить время после запуска программы, например, была тут схожая задача про то что зеленый свет горит 3 минуты, желтый-1, красный тоже 3. И есть час(можно задать время от 1 мин до 60). И соответственно получить ответ в виде цвета светофора на разных дорогах перекрестка.

Вот так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class Light
{
    private:
        static const int green = 3;
        static const int yellow = 1;
        static const int red = 3;
        int time;
    public:
        Light(int t):time(t){};
        void print_light_by_input() const;
};
 
void Light::print_light_by_input() const
{
    int t = 6;
    int x = time % t;
    if(x <= green)
    {
        cout<<"Зеленый для дороги АВ"<<endl;
        cout<<"Красный для дороги СD"<<endl;
    }
    if(x > green && x <= green + yellow)
    {
        cout<<"Желтый  для дороги АВ"<<endl;
        cout<<"Желтый  для дороги СD"<<endl;
 
    }
    if(x > green + yellow && x < t)
    {
        cout<<"Красный для дороги АВ"<<endl;
        cout<<"Зеленый  для дороги СD"<<endl;
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int time;
    cout<<"Введите время:"<<endl;
    cin>>time;
    Light *light = new Light(time);
    light->print_light_by_input();
    delete light;
    system ("pause");
    return 0;
}
Или это решение сюда не подходит?
0
23.11.2014, 16:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2014, 16:41
Помогаю со студенческими работами здесь

Оптимизировать работу светофоров на перекрестке, используя fuzzy
здравствуйте. есть студенческая практическая работа оптимизировать работу светофоров на перекрестке...

Согласовать между собой несколько светофоров на одном перекрестке
Добрый день, никак не могу сообразить как согласовать между собой несколько светофоров на одном...

Регулирование интенсивности и направления движения на перекрёстке ( радиогруппа, бегунок)
подскажите как регулировать на обычном перекрестке ( 4 направления верх, низ, право, лево)...

Сколькими способами 15 пешеходов могут разойтись на перекрестке по четырем различным дорогам
Сколькими способами 15 пешеходов могут разойтись на перекрестке по четырем различным дорогам? Та же...

Светофор
Здравствуйте уважаемые программисты. В очередной раз прошу Вас о помощи. Ниже текст программы...

Светофор на LD
Всем привет! помогите чайнику, как на языке Lad сделать светофор??? заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru