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

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

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

Промоделировать в консоли работу лифта - C++

17.03.2013, 15:22. Просмотров 1035. Ответов 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
#include <iostream>
#include <stdio.h>
#include <locale.h>
using namespace std;
 
class lift 
{
    int ch_floor, f; // Выбор этажа
    bool opened; // лифт орткрыт?
public:
    int GetFloor(); // функция получения номера этажа
    int floor(); // меню выбора этажа
    int people(); // меню колличества людей
    static int start(); // меню запуска
    void SetFloor(int floor); // функция выбора этажа
    void Doors(bool n); // функция закрытия и открытия дверей     
};
 
int lift::start() // описание меню старта
{
        char choice;
        do 
        {
                cout << "\n Выберите действие: \n C - вызвать лифт \n E - выйти из программы \n ";
                cin>>choice;
        }
        while(!strchr("ce",tolower(choice)));
        return tolower(choice); // Возвращение строчного буквенного эквивалента
}
 
void lift::Doors(bool n) // описание функции закрытия и открытия дверей     
{
        bool opened=n;
        if (opened == true) cout << "\n Двери открыты\n";
        if (opened == false) cout << "\n Двери закрыты\n";
}
int lift::people()
{
        unsigned int num;
        cout << "\n Введите колличество вошедших людей (ограничение - 5 человек)  \n ";
        cin >> num;
        if (num < 6) 
        {
            floor();
        }
        else cout << "\n Перегрузка! Или введено отрицательное значение!\n";
        return 0;
}
        
int lift::floor() // описание меню выбора этажа
{
        int st;
        cout << "\n В этом доме 16 этажей \n Введите необходимый Вам этаж \n ";
        cin >> st;
        switch(st) 
        {
        case 1:cout << "\n Вы находитесь на этом этаже \n ";
            break;
        case 2: 
        case 3: 
        case 4: 
        case 5: 
        case 6: 
        case 7: 
        case 8: 
        case 9: 
        case 10: 
        case 11: 
        case 12: 
        case 13: 
        case 14: 
        case 15: 
        case 16: 
                {
                    opened = false;
                    Doors(opened);
                    cout << " \n Лифт прибыл на " << st << " этаж\n ";
                    opened = true;
                    Doors(opened);
                    break;
                }
        default:cout << "\n Такого этажа нет. \n ";
        }
        return 0;
}
 
int lift::GetFloor() // описание функции получения номера этажа
{
        return ch_floor;
}
 
void lift::SetFloor(int f) // описание функции выбора этажа
{ 
        ch_floor = f;
}
 
int main()
{ 
    setlocale(LC_ALL, "Russian"); // активация русского языка
    lift lift1;
    char choice;
    bool opened;
    cout << "\n Моделирование лифта! \n";
    for(;;) 
    {
        choice=lift::start();
        switch(choice) 
        {
            case 'c':
            {
                cout << "\n Вы вызвали лифт \n";
                opened=true;
                lift1.Doors(opened);
                lift1.people();
                break;
            }
            case 'e':
                return 0;
        }
    }
}
Осталось добавить пару моментов, а именно:
1) исправить пропажу количества людей людей в int lift:eople().
2) сделать чтобы лифт вызывался не только с первого этажа.
3) добавить высадку людей из лифта.
Подскажите, пожалуйста. Вроде бы мелочь осталась, но для меня это камень преткновения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 15:22     Промоделировать в консоли работу лифта
Посмотрите здесь:

Модель лифта - C++
Доброго времени суток! Задача - реализовать в программе команды по управлению лифтом, учитывая практические ограничения ( лифт должен...

Программирование классов для моделирования лифта. - C++
Помогите пожалуйста создать модель работы лифта в С++. Есть пасажир &quot;1&quot; появляется на 1 этаже,время появления по таймеру:1,направление...

Промоделировать поведение муравья на квадратном поле - C++
Ваша задача промоделировать поведение муравья на квадратном поле (NxN, где N задается пользователем). Муравей может перемещаться на...

Промоделировать падения тела с заданными характеристиками (масса, форма) в различных вязких средах - C++
Есть задача Промоделировать падения тела с заданными характеристиками (масса, форма) в различных вязких средах. Изучить влияние...

Переделать работу с текстовыми файлами под работу с двоичными файлами - C++
Здравствуйте. В этой программе идёт работа с текстовыми файлами, а нужно с двоичными. Можно ли как-то переделать? #include...

часы в консоли - C++
Такой вопрос, допустим я пишу в консольке прогу, и хочу запилить часы в угол консоли, часы делаю через Sleep(1000), понимаю что это не есть...

Текст в консоли - C++
Ребят, какие есть функции форматирования текста в консоли? В частности, мне нужно следующее: а) чтобы в консоли текст на след. строку...

Вывод в консоли - C++
//12.cpp #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; void starline(); ...

шрифт в консоли - C++
как увеличить или уменьшить шрифт в консоли?

Русик консоли - C++
Я конешно понимаю что поднимаю эту тему тысячный раз, но все таки: пишу на wxDev-C++ для русификации код: #include &lt;iostream&gt; ...

Ввод в консоли - C++
Возникла проблема: необходимо при вводе в консоли сделать так, чтобы при нажатии enter вводил значение по умолчанию. Также необходима...

Псевдографика в консоли - C++
Доброе время суток! Ставил значит на днях Boost, через mac port и увидел очень занятную &quot;псевдографику&quot;. Сразу захотелось себе ее...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sergey271
0 / 0 / 0
Регистрация: 22.09.2014
Сообщений: 17
23.09.2014, 17:42     Промоделировать в консоли работу лифта #2
Тема актуальна нужно поднимать.
Ну что Курица911 начинаем включать мозг и разбираться в модели лифта.
Постановка задачи: Промоделировать в консоле работу лифта в двухэтажном здании. Разумеется всю делать в нотации объектов.
На экране можно выводить что-то типа:
Появляется пассажир на % этаже
нажата кнопка %
лифт находиться на % этаже начинает двигаться на % этаж(5 сек на передвижение)
Зажигается табло на % этаже
Открываются двери лифта
Гаснет табло
Сбрасывается кнопка %
Двери закрываются
и т.д.



Рассуждения такие. Создаем класс Здание который включает в себя массив из 2х элементов которые имею тип Этаж
Создаем класс Лифт, который включает в себя массив типа Кнопка 4 элемента(2 кнопки на этаже и 2 кнопки в лифте).
Создать класс Пассажир, походу его надо делать дружественным к классу кнопка так как, он будет вызывать функцию нажатие кнопки.
Ну и надо придумать что то типа функции планировщика которая будет создавать новых пассажиров на случайном этаже.
Код будет чуть позже.
Sergey271
0 / 0 / 0
Регистрация: 22.09.2014
Сообщений: 17
05.10.2014, 18:01     Промоделировать в консоли работу лифта #3
Остановился на такой схеме
Миниатюры
Промоделировать в консоли работу лифта  
Yandex
Объявления
05.10.2014, 18:01     Промоделировать в консоли работу лифта
Ответ Создать тему
Опции темы

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