Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/89: Рейтинг темы: голосов - 89, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 13.06.2011
Сообщений: 12

Модель лифта

13.06.2011, 16:53. Показов 17046. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Задача - реализовать в программе команды по управлению лифтом, учитывая практические ограничения ( лифт должен оставаться на этаже, куда "приехал" пользователь) . Мыслью было сделать нечто вроде текстовых игр ( т.е. последовательно задающиеся вопросы). В итоге написал код, но компилятор сильно ругается, особенно в мэйне (использую MS Visual Studio 2010) + хотелось бы выслушать в целом о программе - будет ли работать, каким образом можно оптимизировать?) Заранее спасибо!
Схему программы вложил + код:
Code
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
#include <iostream>
#include <cctype>
#include <cstring>
#include <cstdlib>
 
using namespace std;
 
class Lift {
    int current_floor,f;
    bool isOpened;
public:
    int GetCurrentFloor(), floor_menu(), wight_menu();
    static int start_menu()
    void SetCurrentFloor(int floor), CloseOpenDoors(bool n);
     
};
 
int Lift::start_menu()
{
    char choice;
 
    cout << "\n";
    do {
        cout << " Enter \n (C)all lift\n (E)xit";
        cin>>choice;
    } while(!strchr("ce",tolower(choice)));
    return tolower(choice);
}
 
void Lift::CloseOpenDoors(bool n)
{
    bool IsOpened=n;
    if (isOpened == true) cout << "Doors are opened\n";
    if (isOpened == false) cout << "Doors are locked\n";
    
}
 
int Lift::wight_menu()
{
    int wight;
    cout << " Enter passanger's wight\n (limit - 1000 kg)";
    cin >> wight;
    if (0 < wight < 1000) {
        isOpened == false;
        CloseOpenDoors(isOpened);
        floor_menu();
    } else cout << " Limit is nesoblyuden!\n";
}
    
int Lift::floor_menu()
{
    int ch;
    cout << "\n There is five floors \nEnter number of floor\n";
    cin>>ch;
    switch(ch) {
    case 1:cout << "You're in this floor";break;
    case 2: 
        {
            isOpened==false;
            CloseOpenDoors(isOpened);
            cout << " \nlift come to" << ch << "floor\n";
            isOpened==true;
            CloseOpenDoors(isOpened);
            break;
        }
    case 3: 
        {
            isOpened==false;
            CloseOpenDoors(isOpened);
            cout << " \nlift come to" << ch << "floor\n";
            isOpened==true;
            CloseOpenDoors(isOpened);
            break;
        }
    case 4: 
        {
            isOpened==false;
            CloseOpenDoors(isOpened);
            cout << " \nlift come to" << ch << "floor\n";
            isOpened==true;
            CloseOpenDoors(isOpened);
            break;
        }
    case 5: 
        {
            isOpened==false;
            CloseOpenDoors(isOpened);
            cout << " \nlift come to" << ch << "floor\n";
            isOpened==true;
            CloseOpenDoors(isOpened);
            break;
        }
    default:cout << "error!";
    }
}
 
int Lift::GetCurrentFloor() 
{
    return current_floor;
}
 
void Lift::SetCurrentFloor(int f)
{ 
    current_floor = f;
}
 
int main()
{ 
    char choice;
    bool isOpened;
    cout << " Welcome to Lift programm!\n";
 
    for(;;) {
        choice=Lift::start_menu();
        switch(choice) {
        case 'c':
            {
            cout << " You called lift\n";
            isOpened==true;
            CloseOpenDoors();
            wight_menu();
            break;
            }
        case 'e':return 0;
        }
    }
}
Миниатюры
Модель лифта  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2011, 16:53
Ответы с готовыми решениями:

Модель движения лифта
Имеется такое задание. Подскажите как можно это реализовать? Просто не могу понять, за что браться учить чтобы сделать это. Заранее...

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

Промоделировать в консоли работу лифта
Помогите пожалуйста доделать программу модуляции лифта. Вот мой код: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include...

4
battlemc
13.06.2011, 20:03
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
#include <iostream>
#include <cctype>
#include <cstring>
#include <cstdlib>
 
using namespace std;
 
class Lift {
        int current_floor,f;
        bool isOpened;
public:
    int GetCurrentFloor(), floor_menu(), wight_menu();
        static int start_menu();
    void SetCurrentFloor(int floor), CloseOpenDoors(bool n);
         
};
 
int Lift::start_menu()
{
        char choice;
 
        cout << "\n";
        do {
                cout << " Enter \n (C)all lift\n (E)xit";
                cin>>choice;
        } while(!strchr("ce",tolower(choice)));
        return tolower(choice);
}
 
void Lift::CloseOpenDoors(bool n)
{
        bool IsOpened=n;
        if (isOpened == true) cout << "Doors are opened\n";
        if (isOpened == false) cout << "Doors are locked\n";
        
}
 
int Lift::wight_menu()
{
        int wight;
        cout << " Enter passanger's wight\n (limit - 1000 kg)";
        cin >> wight;
        if (0 < wight < 1000) {
                isOpened == false;
                CloseOpenDoors(isOpened);
                floor_menu();
        } else cout << " Limit is nesoblyuden!\n";
        return 0;
}
        
int Lift::floor_menu()
{
        int ch;
        cout << "\n There is five floors \nEnter number of floor\n";
        cin>>ch;
        switch(ch) {
        case 1:cout << "You're in this floor";break;
        case 2: 
                {
                        isOpened==false;
                    CloseOpenDoors(isOpened);
                    cout << " \nlift come to" << ch << "floor\n";
                    isOpened==true;
                    CloseOpenDoors(isOpened);
                    break;
                }
        case 3: 
                {
                        isOpened==false;
                    CloseOpenDoors(isOpened);
                    cout << " \nlift come to" << ch << "floor\n";
                    isOpened==true;
                    CloseOpenDoors(isOpened);
                    break;
                }
        case 4: 
                {
                        isOpened==false;
                    CloseOpenDoors(isOpened);
                    cout << " \nlift come to" << ch << "floor\n";
                    isOpened==true;
                    CloseOpenDoors(isOpened);
                    break;
                }
        case 5: 
                {
                        isOpened==false;
                    CloseOpenDoors(isOpened);
                    cout << " \nlift come to" << ch << "floor\n";
                    isOpened==true;
                    CloseOpenDoors(isOpened);
                    break;
                }
        default:cout << "error!";
        }
        return 0;
}
 
int Lift::GetCurrentFloor() 
{
        return current_floor;
}
 
void Lift::SetCurrentFloor(int f)
{ 
        current_floor = f;
}
 
int main()
{ 
        Lift x;
        char choice;
        bool isOpened;
        cout << " Welcome to Lift programm!\n";
 
        for(;;) {
                choice=Lift::start_menu();
                switch(choice) {
                case 'c':
                        {
                        cout << " You called lift\n";
                        isOpened=true;
                        x.CloseOpenDoors(isOpened);
                        x.wight_menu();
                        break;
                        }
                case 'e':return 0;
                }
        }
}
Ваша отлаженная программа. Ошибки чисто синтаксические - пропущены ';' , функции не возвращают занчения, ну и в мэйне немного напутали.
Для оптимизации могу посоветовать выводить номер этажа, на котором находится лифт, лучше будет сохранять номер этажа в файле. Ещё у вас не работает проверка на макимальный вес пассажира.
2 / 2 / 0
Регистрация: 13.06.2011
Сообщений: 12
13.06.2011, 20:11  [ТС]
battlemc, Огромное спасибо! Думаю, с весом и остальным разберусь сам.
1
battlemc
13.06.2011, 20:18
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
#include <iostream>
#include <cctype>
#include <cstring>
#include <cstdlib>
 
using namespace std;
 
class Lift {
        int current_floor,f;
        bool isOpened;
public:
    int GetCurrentFloor(), floor_menu(), wight_menu();
        static int start_menu();
    void SetCurrentFloor(int floor), CloseOpenDoors(bool n);
         
};
 
int Lift::start_menu()
{
        char choice;
 
        cout << "\n";
        do {
                cout << " Enter \n (C)all lift\n (E)xit";
                cin>>choice;
        } while(!strchr("ce",tolower(choice)));
        return tolower(choice);
}
 
void Lift::CloseOpenDoors(bool n)
{
        bool IsOpened=n;
        if (isOpened == true) cout << "Doors are opened\n";
        if (isOpened == false) cout << "Doors are locked\n";
        
}
 
int Lift::wight_menu()
{
        int wight;
        cout << " Enter passanger's wight\n (limit - 1000 kg)";
        cin >> wight;
        if (0 < wight < 1000) {
                isOpened = false;
                CloseOpenDoors(isOpened);
                floor_menu();
        } else cout << " Limit is nesoblyuden!\n";
        return 0;
}
        
int Lift::floor_menu()
{
        int ch;
        cout << "\n There is five floors \nEnter number of floor\n";
        cin>>ch;
        switch(ch) {
        case 1:cout << "You're in this floor";break;
        case 2: 
                {
                        isOpened=false;
                    CloseOpenDoors(isOpened);
                    cout << " \nlift come to" << ch << "floor\n";
                    isOpened=true;
                    CloseOpenDoors(isOpened);
                    break;
                }
        case 3: 
                {
                        isOpened=false;
                    CloseOpenDoors(isOpened);
                    cout << " \nlift come to" << ch << "floor\n";
                    isOpened=true;
                    CloseOpenDoors(isOpened);
                    break;
                }
        case 4: 
                {
                        isOpened=false;
                    CloseOpenDoors(isOpened);
                    cout << " \nlift come to" << ch << "floor\n";
                    isOpened=true;
                    CloseOpenDoors(isOpened);
                    break;
                }
        case 5: 
                {
                        isOpened=false;
                    CloseOpenDoors(isOpened);
                    cout << " \nlift come to" << ch << "floor\n";
                    isOpened=true;
                    CloseOpenDoors(isOpened);
                    break;
                }
        default:cout << "error!";
        }
        return 0;
}
 
int Lift::GetCurrentFloor() 
{
        return current_floor;
}
 
void Lift::SetCurrentFloor(int f)
{ 
        current_floor = f;
}
 
int main()
{ 
        Lift x;
        char choice;
        bool isOpened;
        cout << " Welcome to Lift programm!\n";
 
        for(;;) {
                choice=Lift::start_menu();
                switch(choice) {
                case 'c':
                        {
                        cout << " You called lift\n";
                        isOpened=true;
                        x.CloseOpenDoors(isOpened);
                        x.wight_menu();
                        break;
                        }
                case 'e':return 0;
                }
        }
}
Нашёл ошибку в работе "ограничителя" веса. Вы вместо операции присваивания "=" используете операцию "==".
2 / 2 / 0
Регистрация: 13.06.2011
Сообщений: 12
13.06.2011, 20:48  [ТС]
Да, я уже заметил. заодно если заменить == на =, начинает работать функция вывода на экран открывания\закрывания дверей
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2011, 20:48
Помогаю со студенческими работами здесь

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

Определить номер лифта, который будет вызван
В доме N этажей и три лифта. Каждый лифт может быть свободным или занятым. Человек стоит на одном из этажей и собирается вызвать либо...

Программа на C++, которая переводит цветовую модель RGB в модель HSV
Всем привет! Я - начинающий программист. Мне нужна ваша помощь. Мне нужно сделать программу на C++, которая переводит цветовую модель RGB в...

Реализовать модель лифта
Срочно нужна хелпа в решении пары не особо сложных задачек в ООП. Не особо шарю в реализации методов.. Первая: Лифт Дан...

Модель работы лифта
Пасажирський ліфт має 10 зупинок, кожна зупинка, крім 1-ї та 10-ї має по 2 кнопки (панель виклику) кнопка &quot;вгору&quot; і кнопка...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru