Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2014, 18:12   #1
Dumbl-D
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 26
По умолчанию Светофор на перекрестке

Подскажите, пожалуйста, корректно ли такое решение для данного задания?

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


Код:
#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;
}
Ну или написать для светофора 1 для 2... и т.д... Это уже не суть важно. Главное для меня - узнать, можно ли так решать эту задачу. А то какое-то слишком простое решение вышло.
Dumbl-D вне форума Ответить с цитированием
Старый 23.11.2014, 22:42   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию

вполне. работает же?
Smogg вне форума Ответить с цитированием
Старый 23.11.2014, 22:48   #3
Dumbl-D
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Smogg Посмотреть сообщение
вполне. работает же?
Да, работает. Вроде, даже правильно.
Но все настолько просто, что появляются невольные сомнения(
Просто я сначала думала через таймер реализовывать и чтоб оно само выводило и время и свечение цветов, но потом пришла к более примитивному варианту. Под задание вроде подходит. Что ж, буду пробовать сдавать.
Спасибо за ответ, теперь немного увереннее в правильности))
Dumbl-D вне форума Ответить с цитированием
Старый 23.11.2014, 23:04   #4
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию

ну если хочется, то можно добавить настройки времени.

А еще нарисовать перекресток со всеми светофорами (блин, скока их там... как минимум 4) и указать какой как горит. Тогда в один момент времени один горит красным, другой зеленым. И плюс желтый еще как-то между красным-зеленым встревает)
Smogg вне форума Ответить с цитированием
Старый 23.11.2014, 23:18   #5
Dumbl-D
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Smogg Посмотреть сообщение
ну если хочется, то можно добавить настройки времени.
А какие именно настройки, подскажите?
Про рисование вроде ничего не говорили пока, так что не буду переусердствовать)
Dumbl-D вне форума Ответить с цитированием
Старый 23.11.2014, 23:51   #6
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию

ок, если подходить по серьезному: всего есть 4 светофора, два автомобильных, два пешеходных. У пешеходных два состояния. У автомобильных - три.

Условимся, что одновременно автомобили и пешеходы двигаться не могут. Пешеходы могут переходить одновременно обе дорогах, а автомобили двигаются только по одной.

Таким образом, два пешеходных светофора заменяются одним.

В настройках указывается время горения красного (зеленого) и желтого для автомобильного и длительность зеленого для пешехода.
Smogg вне форума Ответить с цитированием
Старый 25.11.2014, 04:29   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Dumbl-D, у вас отличная программа, но лучше развить её, чтобы попрактиковаться. Попробуйте нарисовать схематично на окне, то что написал Smogg. Выберите какой-нибудь простой и доступный инструмент для рисования и изобразите хотя бы в виде квадратиков пешеходов и машины: квадратик с буквой "П" - пешеход, с буквой "М" - машина и т.д.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Светофор АЛЕКСАНДЕР 999 Паскаль, Turbo Pascal, PascalABC.NET 0 17.02.2012 18:59
светофор zanik Паскаль, Turbo Pascal, PascalABC.NET 3 27.12.2010 21:35
Светофор Porsche Общие вопросы C/C++ 2 15.05.2010 00:13
моделирование работы светофора на перекрестке люля Фриланс 10 24.03.2009 09:41