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

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

Восстановить пароль Регистрация
 
kurica911
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 6
17.03.2013, 15:22     Промоделировать в консоли работу лифта #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
#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++
Положение консоли. C++
C++ Шрифт в консоли
C++ считывание с консоли ( не с клавы, а именно с консоли)
Переделать работу с текстовыми файлами под работу с двоичными файлами C++
C++ Промоделировать поведение муравья на квадратном поле
C++ Кириллица в консоли

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Промоделировать в консоли работу лифта
Ответ Создать тему
Опции темы

Текущее время: 16:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru