С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452

Разработать класс управлением автодорожным светофором

15.09.2016, 13:39. Показов 4725. Ответов 74
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет !

Цель задания

Разработать класс управлением автодорожным светофором

Спасибо !
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.09.2016, 13:39
Ответы с готовыми решениями:

Класс: Разработать абстрактный класс класс Point для задания координаты...
Всем привет, помогите пожалуйста решить задачу, я уже всю голову сломал, не знаю как решить... Разработать абстрактный класс класс...

Контроллер управлением оконных жалюзи и дистанционным управлением
МПК AVR в интернете вообще ни какой информации по этой теме нет может кто то реферат писал.или программировал кто то

Создать класс СПИСОК целых чисел. Разработать класс СТЕК
"Создать класс СПИСОК целых чисел. Разработать класс СТЕК, который вмещает объект класса СПИСОК. Определить необходимые конструкторы,...

74
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
15.09.2016, 13:47
И в чем конкретно у вас проблема?
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 14:03  [ТС]
C++
1
class Svetofor
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
15.09.2016, 14:15
И что с ним не так?

Добавлено через 23 секунды
Ну помимо того, что в таком виде оно не компилируется.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 14:34  [ТС]
как всегда у знатоков тямы нет - поэтому привожу соответствующее решение



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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include "stdafx.h"
#include <windows.h>
#include <iostream>
 
using namespace std;
 
class Svetofor
{
    bool green;
    bool yellow;
    bool red;
    
    enum Condition{A,B,C,D};
    Condition flag;
 
class Rele_Time
{
    bool flag; // Индикатор сигнального состояния
    LARGE_INTEGER time; // Начальное время отсчета
    int Delay;   // Задержка мс
 
    void processing()
    {
        if (!flag)
        {
            LARGE_INTEGER time;
            SYSTEMTIME st;                     
            FILETIME ft; 
 
            GetSystemTime(&st);
            SystemTimeToFileTime(&st,&ft);
            
            time.LowPart = ft.dwLowDateTime;
            time.HighPart = ft.dwHighDateTime;  
            
            if ((time.QuadPart - (this->time).QuadPart) >= (10000*Delay)) flag = true;
        }
    }
public:
    Rele_Time(int Delay) 
    {
        this->Delay = Delay;
        flag = false;
 
        SYSTEMTIME st;                     
        FILETIME ft; 
 
        GetSystemTime(&st);
        SystemTimeToFileTime(&st,&ft);
            
        time.LowPart = ft.dwLowDateTime;
        time.HighPart = ft.dwHighDateTime;
    }
 
    bool condition() 
    {
        processing();
        return flag;
    }
};
 
Rele_Time *r1;
 
public:
    Svetofor() : green(false), yellow(false), red(true), flag(A) 
    {
        r1 = new Rele_Time(30000); // 30 с
        cout << "***** red *****"<<endl;
    }
 
    void Control()
    {
        switch (flag)
        {
        case A:
            if (r1->condition())
            {
                yellow = true;
                flag = B;
                system("cls");
                cout << "***** red + yellow *****"<<endl;
 
                delete r1;
                r1 = new Rele_Time(3000); // 3 с
            }
            break;
        case B:
            if (r1->condition())
            {
                red = false;
                yellow = false;
                green = true;
                flag = C;
                system("cls");
                cout << "***** green *****"<<endl;
 
                delete r1;
                r1 = new Rele_Time(30000); // 30 с
            }
            break;
        case C:
            if (r1->condition())
            {
                green = false;
                yellow = true;
                flag = D;
                system("cls");
                cout << "***** yellow *****"<<endl;
 
                delete r1;
                r1 = new Rele_Time(3000); // 3 с
            }
            break;
        case D:
            if (r1->condition())
            {
                yellow = false;
                red = true;
                flag = A;
                system("cls");
                cout << "***** red *****"<<endl;
 
                delete r1;
                r1 = new Rele_Time(30000); // 30 с
            }
            break;
        }
    }
 
    bool get_green() const {return green;}
    bool get_yellow() const {return yellow;}
    bool get_red() const {return red;}
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    Svetofor s;
 
    while (true) {s.Control();}
 
 
    return 0;
}
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
15.09.2016, 14:48
Цитата Сообщение от RAFA91 Посмотреть сообщение
поэтому привожу соответствующее решение
Соответствующее чему? Это же экскременты мамонта, не более.
C++
1
while (true) {s.Control();}
таки пошла эта фигня в работу, как и ожидали.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 14:52  [ТС]
нету примера - нету тямы.

на той строке прога не заканчивается . добавь свое что-то туда раз тямы нету.


и че все лезут в мейн )))))))))
Цитата Сообщение от Croessmah Посмотреть сообщение
говнокод

это вам ближе
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
15.09.2016, 14:55
Что-то кот неидиоматичен. Где фабрики абстрактных фабрик, депенденси инжекшены, обсерваблы и прочие стратегии?
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
15.09.2016, 14:59
_Ivana, как где? Тямы же нет.

RAFA91, признаков наличия ума у Вас не наблюдается. А вот его отсутствие очевидно.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 15:03  [ТС]
теперь предлагаю задачу усложнить.

создать массив из 10 светофоров.

1 светофор появляется через 10 с. следующий через 10 с после предведущего и т.д.


все показания отображать на консоли. имена побоку какие.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 15:32  [ТС]
все показания отображать на консоли. имена побоку какие.
Миниатюры
Разработать класс управлением автодорожным светофором  
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 16:10  [ТС]
со второй частью никто не справился. поэтому привожу талант. #include "Rele_Time.h"

теперь голова хоть будет думать зачем это все сделано.

C++
1
 со второй частью никто не справился.  поэтому привожу талант.
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#include "stdafx.h"
#include <iostream>
#include <string>
#include "Rele_Time.h"
 
using namespace std;
 
string str[10] = 
{"Svetofor_1","Svetofor_2","Svetofor_3","Svetofor_4","Svetofor_5",
"Svetofor_6","Svetofor_7","Svetofor_8","Svetofor_9","Svetofor_10"};
 
class Svetofor
{
    bool green;
    bool yellow;
    bool red;
    
    enum Condition{A,B,C,D};
    Condition flag;
 
    string name;
 
class Rele_Time
{
    bool flag; // Индикатор сигнального состояния
    LARGE_INTEGER time; // Начальное время отсчета
    int Delay;   // Задержка мс
 
    void processing()
    {
        if (!flag)
        {
            LARGE_INTEGER time;
            SYSTEMTIME st;                     
            FILETIME ft; 
 
            GetSystemTime(&st);
            SystemTimeToFileTime(&st,&ft);
            
            time.LowPart = ft.dwLowDateTime;
            time.HighPart = ft.dwHighDateTime;  
            
            if ((time.QuadPart - (this->time).QuadPart) >= (10000*Delay)) flag = true;
        }
    }
public:
    Rele_Time(int Delay) 
    {
        this->Delay = Delay;
        flag = false;
 
        SYSTEMTIME st;                     
        FILETIME ft; 
 
        GetSystemTime(&st);
        SystemTimeToFileTime(&st,&ft);
            
        time.LowPart = ft.dwLowDateTime;
        time.HighPart = ft.dwHighDateTime;
    }
 
    bool condition() 
    {
        processing();
        return flag;
    }
};
 
Rele_Time *r1;
 
public:
    Svetofor(const string &name) : green(false), yellow(false), red(true), flag(A) 
    {
        this->name = name;
        r1 = new Rele_Time(30000); // 30 с
        cout << "***** red ***** "<<name<<endl;
    }
 
    void Control()
    {
        switch (flag)
        {
        case A:
            if (r1->condition())
            {
                yellow = true;
                flag = B;
                
                cout << "***** red + yellow ***** "<<name<<endl;
 
                delete r1;
                r1 = new Rele_Time(3000); // 3 с
            }
            break;
        case B:
            if (r1->condition())
            {
                red = false;
                yellow = false;
                green = true;
                flag = C;
                
                cout << "***** green ***** "<<name<<endl;
 
                delete r1;
                r1 = new Rele_Time(30000); // 30 с
            }
            break;
        case C:
            if (r1->condition())
            {
                green = false;
                yellow = true;
                flag = D;
                
                cout << "***** yellow ***** "<<name<<endl;
 
                delete r1;
                r1 = new Rele_Time(3000); // 3 с
            }
            break;
        case D:
            if (r1->condition())
            {
                yellow = false;
                red = true;
                flag = A;
                
                cout << "***** red ***** "<<name<<endl;
 
                delete r1;
                r1 = new Rele_Time(30000); // 30 с
            }
            break;
        }
    }
 
    bool get_green() const {return green;}
    bool get_yellow() const {return yellow;}
    bool get_red() const {return red;}
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    Svetofor *s[10] = {NULL};
    Rele_Time *r = new Rele_Time(10000);
 
    int index = 0;
 
    while (true) 
    {
        if (index < 10 && r->condition())
        {
            s[index] = new Svetofor(str[index]);
            index++;
            delete r;
            r = new Rele_Time(10000);
        }
        for (int i=0;i<10;i++) 
        {
            if (s[i]) s[i]->Control();
        }
    }
 
 
    return 0;
}
0
Эксперт .NET
 Аватар для Usaga
14112 / 9329 / 1350
Регистрация: 21.01.2016
Сообщений: 35,046
15.09.2016, 16:21
RAFA91, ты здесь в преподавателя, что ли, играешь?
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 16:29  [ТС]
пусть кто-то продемонстрирует решение второго пункта если тямы хватит.

поток должен быть один.

никаких задержек быть не должно.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.09.2016, 16:32
RAFA91,
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
class Traffic_light
{
public:
    enum Color { e_none, e_red, e_yellow, e_green };
    
    Traffic_light( Color color ): curr_color( color )
    {}
    
    void switch_light()
    {
        switch( curr_color )
        {
            case e_none:
                curr_color = e_red;
                break;
            case e_red:
                curr_color = e_yellow;
                prev_color = e_red;
                break;
            case e_yellow:
                if( prev_color == e_red )
                {
                    curr_color = e_green;
                }
                else
                {
                    curr_color = e_red;
                }
                break;
            case e_green:
                curr_color = e_yellow;
                prev_color = e_green;
                break;
            default:
                break;
        }
    }
    
    void print_curr_light()
    {
        switch( curr_color )
        {
            case e_none:
                std::cout << "Traffic light at the moment off." << std::endl;
                break;
            case e_red:
                std::cout << "*****RED******" << std::endl;
                break;
            case e_yellow:
                std::cout << "*****YELLOW******" << std::endl;
                break;
            case e_green:
                std::cout << "*****GREEN******" << std::endl;
                break;
            default:
                break;
        }
    }
private:
    Color curr_color;
    Color prev_color;
};
///////////////////////////////////////////////////////////////////////////////
int main()
{
    Traffic_light tl( Traffic_light::Color::e_none );
    
    #define switch_light_and_print_curr(cl) \
        cl.switch_light(); \
        cl.print_curr_light()
    for( int i{}; i < 150; ++i )
    {
        switch_light_and_print_curr(tl);
    }
}
Вот Вам код, только он без всяких там задержек, но можете сами их добавить. Я их не сделал, т.к. в первом посте этого оговорено не было.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 16:39  [ТС]
это что за детский сад ?

вы что не видели как работает светофор.

1. красный горит 30 секунд
2. 3 секунды горит красный+желтый
3. 30 секунд горит зеленый
4. 3 секунды горит желтый
5. переходим к шагу 1
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.09.2016, 16:41
Цитата Сообщение от RAFA91 Посмотреть сообщение
это что за детский сад ?
Это конкретный ответ на Вашу "конкретно" поставленную задачу.

Цитата Сообщение от RAFA91 Посмотреть сообщение
вы что не видели как работает светофор.
1. красный горит 30 секунд
2. 3 секунды горит красный+желтый
3. 30 секунд горит зеленый
4. 3 секунды горит желтый
5. переходим к шагу 1
Да? И прям на всех светофорах так? То есть не надо никаких мыслей о том, что один светофор включается последовательно с другим, чтобы пробка, например, не встала посреди проезжей части перекрестка?
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 16:48  [ТС]
Цитата Сообщение от GbaLog- Посмотреть сообщение
о том, что один светофор включается последовательно с другим

как это светофоры включаются последовательно ? как резисторы что-ль ?

мы сейчас рассматриваем светофор одиночку. никаких увязок нету.

в дальнейшем будем думать о цифровой индикации
Миниатюры
Разработать класс управлением автодорожным светофором  
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.09.2016, 16:51
RAFA91, Ну тогда в чём проблема, я вот знаю, что светофор может переключать цвета, с красного на желтый, потом на зеленый, потом снова на желтый, потом опять на красный, и опять сначала. Что не так в моём варианте, я понять не могу. Я же сказал, что не добавил задержек, но так же сказал, что Вы можете сами их добавить.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.09.2016, 16:53  [ТС]
не не не.

там еще желтый с красным может гореть при переходе на зеленый.

незя задержки тулить. программа не должна виснуть на этой строке.

иначе не выполните вторую часть. так же ?

1. красный горит 30 секунд
2. 3 секунды горит красный+желтый
3. 30 секунд горит зеленый
4. 3 секунды горит желтый
5. переходим к шагу 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2016, 16:53
Помогаю со студенческими работами здесь

Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты.
Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты.

Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты
Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты.

Разработать класс для описанных ниже объектов. Включить в класс методы set (.), get (.), show (.)
Разработать класс для описанных ниже объектов. Включить в класс методы set (...), get (...), show (...) Patient: Фамилия, Имя, Отчество,...

Разработать класс Car. Добавить в класс 3 поля...
Разработать класс Car. Добавить в класс 3 поля: марка автомобиля, цвет автомобиля (использовать перечисление), стоимость автомобиля ...

Разработать базовый класс "прямоугольник", производный класс "Окно" и класс-контейнер "Список окон"
Реализовать все задачи в С # WPF 1. Разработать класс прямоугольник, имеющий координаты верхнего левого и нижнего правого угла, цвет...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru