Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AlexHolmes
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
#1

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

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

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

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

Пожалуйста, ответьте, а то я в тупике( Не могу составить даже алгоритм действий((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2014, 19:05     Светофор на перекрестке
Посмотрите здесь:

Программа светофор на Windows Forms - C++
Помогите пожалуйста решить такую задачу: нужно создать оконное приложение, в котором будет нарисован светофор и при нажатии на кнопку он...

Реализовать работающий светофор (Паскаль -> С++) - C++
Добрый день. Дали задачку решить. Вывести на экран работающий светофор. Написано на Паскале. Нужно переписать в С++. Program GrushinK; ...

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

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

Изобразить движение транспорта на перекрестке - Pascal ABC
Нужно сделать движение как на этой картинке все картинки в архиве и залил на хостинк картинок первой должна проехать красная машина ссылки...

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

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

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

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

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

Цитата Сообщение от egor2116 Посмотреть сообщение
Очевидно да, только таймер 1 и переключатель который будет переключать цвета и сбрасывать таймер
А подскажите, пожалуйста, как этот самый таймер реализовать?
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
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;
}
AlexHolmes
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
22.11.2014, 19:58  [ТС]     Светофор на перекрестке #7
Цитата Сообщение от egor2116 Посмотреть сообщение
Ну как нибудь так
Спасибо большое, буду работать дальше)
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
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(), которая меняет состояние на противоположное.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2014, 16:41     Светофор на перекрестке
Еще ссылки по теме:

Светофор - Delphi
Здравствуйте уважаемые программисты. В очередной раз прошу Вас о помощи. Ниже текст программы &quot;Светофор&quot;. Программа должна работать по...

Светофор - Delphi
Нужен cветофор, где с права от его будут edit-ы куда вписать время моргания каждого цвета светофора,

Светофор - PascalABC.NET
Доброго времени суток!!! Нужна ваша помощь! есть одна задачка, в которой я застрял))) необходимо создать светофор и кнопку переключение...

Светофор - Delphi
Дано предложение &quot;Текст красного цвета&quot;. Нужно сделать так, что бы текст менял цвет и одновременно смещался вниз. Т.е. чтобы получился...


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

Или воспользуйтесь поиском по форуму:
AlexHolmes
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;
}
Или это решение сюда не подходит?
Yandex
Объявления
23.11.2014, 16:41     Светофор на перекрестке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru