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

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

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

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

Цель задания

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

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

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

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

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

74
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
16.09.2016, 17:14  [ТС]
Студворк — интернет-сервис помощи студентам
не смеши ))))))))))))
Миниатюры
Разработать класс управлением автодорожным светофором  
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
16.09.2016, 17:15
Цитата Сообщение от RAFA91 Посмотреть сообщение
не смеши
Даже плагин не смог поставить? Печаль, че.
Спец. ссылка на ютюбище: https://www.youtube.com/watch?v=DjVSyCrSPmo
1
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
16.09.2016, 17:19  [ТС]
и че с вами один геморой ? главное все остальное из ютуба фурычет )))))))
Миниатюры
Разработать класс управлением автодорожным светофором  
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
16.09.2016, 17:20
Цитата Сообщение от RAFA91 Посмотреть сообщение
и че с вами один геморой ?
Не, в данном случае гемморой у Вас. У всех же работает.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
16.09.2016, 17:22  [ТС]
у меня тоже все работает. по

41 пост не осилил же

тока я уже говорил - поток должен быть один.

зачем эти картинки из пейнта ?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
16.09.2016, 17:24
Цитата Сообщение от RAFA91 Посмотреть сообщение
зачем эти картинки из пейнта ?
Сейчас бы видео в паинте переделывать.
0
Эксперт .NET
 Аватар для Usaga
14301 / 9386 / 1353
Регистрация: 21.01.2016
Сообщений: 35,385
16.09.2016, 17:25
Цитата Сообщение от RAFA91 Посмотреть сообщение
тока я уже говорил - поток должен быть один.
Что мешает одному потоку анимировать 175 светофоров?

Кстати, 50% нагрузка - результат твоего while(true). Работу по таймеру позволила бы держать туже нагрузку (10 светофоров в твоём случае), но снизило бы общую загруженность системы. На это тебе уже несколько человек тонко намекнуло.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
16.09.2016, 17:53
Цитата Сообщение от RAFA91 Посмотреть сообщение
у меня она не превышает 50
Потому что бесконечный цикл без пауз жрет одно ядро полностью.
Цитата Сообщение от RAFA91 Посмотреть сообщение
хватит молоть ересть.
Вот вот. Код свой не показывайте больше никому, а то пинать будут.
Цитата Сообщение от RAFA91 Посмотреть сообщение
кто может предложить более производительней по пожалуйста в студию
избавиться от бесперебойного цикла.

Добавлено через 1 минуту
Цитата Сообщение от GbaLog- Посмотреть сообщение
Сейчас бы видео в паинте переделывать.
Я в hex-редакторе монтирую.
И монитора у меня нет.
Проводки от кабеля сразу к пальцам подключены.

Добавлено через 9 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Что мешает одному потоку анимировать 175 светофоров?
То, что их не 770, как в этом видео:
Кликните здесь для просмотра всего текста

2
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
16.09.2016, 18:12
А вся проблема в том, что ТС не умеет нормально разговаривать.



Цитата Сообщение от Croessmah Посмотреть сообщение
То, что их не 770, как в этом видео:
Кликните здесь для просмотра всего текста
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
16.09.2016, 18:25
Цитата Сообщение от Croessmah Посмотреть сообщение
То, что их не 770, как в этом видео

Блин, киньте мне уже, пожалуйста, код в лс. Мне уже интересно, как у Вас там всё устроено!
0
 Аватар для stzer
140 / 110 / 60
Регистрация: 26.10.2013
Сообщений: 314
16.09.2016, 20:43
Croessmah, если будете кодом делиться, то можно и мне в лс?
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
17.09.2016, 11:47  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Что мешает одному потоку анимировать 175 светофоров?

уже нечего . курите код из поста 41. я за вас думать не буду
Цитата Сообщение от GbaLog- Посмотреть сообщение
Сейчас бы видео в паинте переделыват

ясен пень что это он накалякал в пейнте.

хотя про визуализацию не было ни слова ))))))))))))))

это он тролит. раздел то совсем не об этом ))))))). больше тройки не поставлю.
Цитата Сообщение от Croessmah Посмотреть сообщение
И монитора у меня нет.

а кто тебе дал право создавать несколько потоков ???

Добавлено через 5 минут
Цитата Сообщение от Usaga Посмотреть сообщение
результат твоего while(true).
можешь предложить что-то лучше ?

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

сразу ставлю за это 2 - если увижу.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
17.09.2016, 12:08  [ТС]
вот у меня 2оо светофоров в одном потоке .

кто круче может ?



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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include "stdafx.h"
#include <iostream>
#include <string>
#include "Rele_Time.h"
 
using namespace std;
 
string str = "Svetofor";
 
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;
 
int count;
 
public:
    Svetofor(const string &name) : green(false), yellow(false), red(true), flag(A), count(0)
    {
        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())          
            {
                if (count < 6) 
                {
                    if (green) 
                    {
                        green = false;
                        cout << "***** No green ***** "<<name<<endl;
                    }
                    else 
                    {
                        green = true;
                        cout << "***** green ***** "<<name<<endl;
                    }
                    
                    delete r1;
                    r1 = new Rele_Time(750); // 0.75 с
                    
                    count++;
                }
                else
                {
                    green = false;
                    yellow = true;
                    flag = D;
                    count = 0;     // сброс счетчика
                    
                    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[200] = {NULL};
    Rele_Time *r = new Rele_Time(1000);
    char buffer [33];
    int index = 0;
 
    while (true) 
    {
        if (r)
        {
            if (r->condition())
            {
                itoa (index+1,buffer,10);
                s[index] = new Svetofor(str + "_" + buffer);
                index++;
                delete r;
                if (index < 200) r = new Rele_Time(1000);
                else r = NULL;
            }
        }
        
        for (int i=0;i<200;i++) 
        {
            if (s[i]) s[i]->Control();
        }
    }
 
 
    return 0;
}
Миниатюры
Разработать класс управлением автодорожным светофором  
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
17.09.2016, 13:50
Цитата Сообщение от RAFA91 Посмотреть сообщение
кто круче может ?
Croessmah может, он же уже говорил, что сделал 20000 в одном потоке, вот:
Цитата Сообщение от Croessmah Посмотреть сообщение
P.S. я маньяк, я на окно уже больше 20000 штук их налепил. И всё в одном потоке.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
17.09.2016, 13:57  [ТС]
Цитата Сообщение от GbaLog- Посмотреть сообщение
может
в пейнте и я могу. пускай нарисует светофор в консоли если тямы хватит. ))))

он флудит. графический интерфейс обсуждается в другом разделе
Миниатюры
Разработать класс управлением автодорожным светофором  
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
17.09.2016, 14:00
Цитата Сообщение от RAFA91 Посмотреть сообщение
он флудит. графический интерфейс обсуждается в другом разделе
Какая разница графический это интерфейс или нет, ту задачу, которую Вы предложили его приложение выполняет, значит всё верно, а графический интерфейс -- дело второе.

Добавлено через 50 секунд
Или Вы просто завидуете, что не могёте в графический интерфейс?
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
17.09.2016, 14:07  [ТС]
Цитата Сообщение от GbaLog- Посмотреть сообщение
а графический интерфейс -- дело второе
да мне побоку в чем это нарисовано. пускай нарисует это в консоли - а там посмотрим чего он стоит.

завидовать тут нечему. пока не в авторитете батюшка.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.09.2016, 14:16
Цитата Сообщение от RAFA91 Посмотреть сообщение
он флудит
Он "флудить" не может по определению, потому что он модератор в этом разделе, а значит, при исполнении. Если он будет правила нарушать, он очень быстро перестанет быть модератором.

Цитата Сообщение от RAFA91 Посмотреть сообщение
в пейнте и я могу
Это клевета. Я видел код программы, а видео, подтверждающее работу программы, любой школьник может на ютубе посмотреть по ссылке.

Цитата Сообщение от RAFA91 Посмотреть сообщение
пускай нарисует это в консоли
Ваши желания никого не интересуют. Маме своей или супруге их изложите.

Цитата Сообщение от RAFA91 Посмотреть сообщение
посмотрим чего он стоит
Весь форум знает чего стоит он, и чего стоите Вы.

Цитата Сообщение от RAFA91 Посмотреть сообщение
завидовать тут нечему
Это прям про Вас. Над Вами в глаза смеются. Где Ваше чувство собственного достоинства? Кому-то смешно на Вас и Ваши потуги смотреть, а мне так уже больно. Вы - позор форума. Понимаете? Вы вызываете либо презрение, либо смех, либо жалость, либо смесь из этих чувств - у кого как. Одумайтесь. Читайте книги по программированию и умению вести себя в обществе (этикету), ибо и первое, и второе получается у Вас из рук вон плохо.
4
Эксперт .NET
 Аватар для Usaga
14301 / 9386 / 1353
Регистрация: 21.01.2016
Сообщений: 35,385
17.09.2016, 14:20
RAFA91, тут никто ни разу не упоминал несколько потоков. Всё решение сводится к тому, чтобы не хреначить в цикле сравнение текущего времени с начальным для определения "задержек", а к использованию простого, мать его, таймера. Это было предложено почти сразу, только ты это сразу зарубил увидев #include <thread>. Повторюсь: никакой многопоточности тут нет.

Насчёт пэйнта: никто ради тебя не станет озадачиваться рисованием в пейнте мультика. Никто. Если бы ты себя вёл получше, с тобой бы поделись кодом и ты бы сам увидел, что это не ложь и что всё можно сделать гораздо лучше, чем сделал ты.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
17.09.2016, 15:29  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
чтобы не хреначить в цикле
одни слова. кто в эти басни поверит-то ? мой-додыр что-ль (((((((

с тем заданием никто не справился - поэтому переходим далее.

в консоли нада накалякать светофор - и также им управлять.

естественно никакой графики не надо. это только для любителей пейнта.

пост 61 смотри же

Добавлено через 1 час 5 минут
тестовая версия для начинающих

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
class Svetofor
{
    HANDLE hCon;
    COORD cPos;
 
    bool red,yellow,green;
 
    void Draw_horizontal_line(const int &x, const int &y, const int &n, const char &c)
    {
        cPos.X = x;
        cPos.Y = y;
        SetConsoleCursorPosition(hCon, cPos);
        for (int i=0;i<n;i++) cout<<c;
    }
    void Draw_vertical_line(const int &x, int y, const int &n, const char &c)
    {
        cPos.X = x;
        for (int i=0;i<n;i++,y++) 
        {
            cPos.Y = y;
            SetConsoleCursorPosition(hCon, cPos);
            cout<<c;
            
        }
    }
 
public:
    Svetofor()
    {
        int x = 5,y = 5;
        hCon = GetStdHandle(STD_OUTPUT_HANDLE);
        
        for (int i=0;i<3;i++,y+=14)
        {
        Draw_horizontal_line(x, y, 15, '*');
        Draw_horizontal_line(x, y+14, 15, '*');
        Draw_vertical_line(x, y, 15, '*');
        Draw_vertical_line(x+14, y, 15, '*');
        }
 
        Draw_vertical_line(x+7, y, 15, '*');
        Draw_horizontal_line(x, y+14, 15, '*');
 
        red = true;
        yellow = false;
        green = false;
 
    }
    void enabled_red() 
    {
        int x = 6,y = 6;
        for (int i=0;i<13;i++,y++) Draw_horizontal_line(x, y, 13, ')');
    }
    void disabled_red()
    {
        int x = 6,y = 6;
        for (int i=0;i<13;i++,y++) Draw_horizontal_line(x, y, 13, ' ');
    }
    void enabled_yellow()
    {
        int x = 6,y = 20;
        for (int i=0;i<13;i++,y++) Draw_horizontal_line(x, y, 13, '?');
    }
    void disabled_yellow()
    {
        int x = 6,y = 20;
        for (int i=0;i<13;i++,y++) Draw_horizontal_line(x, y, 13, ' ');
    }
    void enabled_green()
    {
        int x = 6,y = 34;
        for (int i=0;i<13;i++,y++) Draw_horizontal_line(x, y, 13, '(');
    }
    void disabled_green()
    {
        int x = 6,y = 34;
        for (int i=0;i<13;i++,y++) Draw_horizontal_line(x, y, 13, ' ');
    }
    
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    Svetofor s;
 
    while (1)
    {
        Sleep(3000);
 
        s.enabled_red();
        Sleep(3000);
        s.enabled_yellow();
        Sleep(3000);
        s.enabled_green();
        Sleep(3000);
 
        s.disabled_red();
        Sleep(3000);
        s.disabled_yellow();
        Sleep(3000);
        s.disabled_green();
        
    }
 
    
 
    
 
    return 0;
}
теперь это надо увязать с предведущими инженерными мыслями и отправлять в эксплуатацию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2016, 15:29
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru