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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Jagir
2 / 2 / 0
Регистрация: 13.06.2011
Сообщений: 12
#1

Модель лифта - C++

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

Доброго времени суток! Задача - реализовать в программе команды по управлению лифтом, учитывая практические ограничения ( лифт должен оставаться на этаже, куда "приехал" пользователь) . Мыслью было сделать нечто вроде текстовых игр ( т.е. последовательно задающиеся вопросы). В итоге написал код, но компилятор сильно ругается, особенно в мэйне (использую MS Visual Studio 2010) + хотелось бы выслушать в целом о программе - будет ли работать, каким образом можно оптимизировать?) Заранее спасибо!
Схему программы вложил + код:
Код
#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
Миниатюры
Модель лифта  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2011, 16:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Модель лифта (C++):

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

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

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

Модель перекрестка - C++
Приветствую. Небольшая предыстория: я не программист, а будущий педагог, но так сложилось, что в рамках большой исследовательской работы...

Физическая модель - C++
Пробовал создать физическую модель нецентрального соударения 2х шаров - не получилось. Помогите решить, учитывая, что у каждого шара...

Спичечная модель - C++
Спичечная модель Профессор Самоделкин решил изготовить объемную модель кубиков из спичек, используя спички для рёбер кубиков....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
battlemc
Сообщений: n/a
13.06.2011, 20:03 #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
#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;
                }
        }
}
Ваша отлаженная программа. Ошибки чисто синтаксические - пропущены ';' , функции не возвращают занчения, ну и в мэйне немного напутали.
Для оптимизации могу посоветовать выводить номер этажа, на котором находится лифт, лучше будет сохранять номер этажа в файле. Ещё у вас не работает проверка на макимальный вес пассажира.
Jagir
2 / 2 / 0
Регистрация: 13.06.2011
Сообщений: 12
13.06.2011, 20:11  [ТС] #3
battlemc, Огромное спасибо! Думаю, с весом и остальным разберусь сам.
1
battlemc
Сообщений: n/a
13.06.2011, 20:18 #4
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;
                }
        }
}
Нашёл ошибку в работе "ограничителя" веса. Вы вместо операции присваивания "=" используете операцию "==".
Jagir
2 / 2 / 0
Регистрация: 13.06.2011
Сообщений: 12
13.06.2011, 20:48  [ТС] #5
Да, я уже заметил. заодно если заменить == на =, начинает работать функция вывода на экран открывания\закрывания дверей
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2011, 20:48
Привет! Вот еще темы с ответами:

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

C++. Виртуальная модель - C++
Заранее извиняюсь.Если подобные темы уже возникали.Но вопрос в следующем.Никто не мог бы дать ссылку,примеры,по работе с анимацией в С++.? ...

модель атома - C++
написать программу ,которая осуществит движение електронов вокруг атома.

Модель стека - C++
Не знаю где создать эту тему, поэтому создал тут: Есть вот такое задание: Модель стека 1. Исходные данные: стек списковой...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.06.2011, 20:48
Ответ Создать тему
Опции темы

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