Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.10.2018
Сообщений: 35
1

Определить номер лифта, который будет вызван

08.09.2019, 18:25. Показов 1206. Ответов 2
Метки нет (Все метки)

В доме N этажей и три лифта. Каждый лифт может быть
свободным или занятым. Человек стоит на одном из этажей и
собирается вызвать либо ближайший свободный лифт, либо
ближайший занятый, направляющийся в сторону этажа, где находится
человек.
Распечатать начальную конфигурацию (расстановку, занятость и
направление движения лифтов, местоположение человека), а также
номер лифта, который будет вызван.
Использовать функции ВВОД, ВЫВОД, ВЫБОР_ЛИФТА.
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <conio.h>
 
#include <cstdio>
#include <iostream>
#include <stdlib.h>
 
struct lift
{
    int situate;
    char sost[10];
    char way[3];
}
 
lift1, lift2, lift3;
 
int main()
{
    int flour;
    int man;
    int l1, l2, l3;
    int min;
    printf("\nVvedite kolichestvo etajei v zdanii -> ");
    scanf("%i", &flour);
    printf("\nVvedite nomer etaja na kotorom nahoditsya chelovek -> ");
    scanf("%i", &man);
 
    printf("\nVvod informacii o lifte #1:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i -> ", flour);
    scanf("%i", &lift1.situate);
    printf("\nLifr zanyat ili svoboden? -> ");
    scanf("%s", lift1.sost);
    printf("\nNapravlenie dvijeniya lifta: up or down -> ");
    scanf("%s", lift1.way);
 
    printf("\nVvod informacii o lifte #2:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i -> ", flour);
    scanf("%i", &lift2.situate);
    printf("\nLifr zanyat ili svoboden? -> ");
    scanf("%s", lift2.sost);
    printf("\nNapravlenie dvijeniya lifta: up or down -> ");
    scanf("%s", lift2.way);
 
    printf("\nVvod informacii o lifte #3:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i -> ", flour);
    scanf("%i", &lift3.situate);
    printf("\nLifr zanyat ili svoboden? -> ");
    scanf("%s", lift3.sost);
    printf("\nNapravlenie dvijeniya lifta: up or down -> ");
    scanf("%s", lift3.way);
 
    if (lift1.sost == "svoboden") {
        printf("\nLifr zanyat ili svoboden? -> ");
 
 
    }
    system("pause");
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2019, 18:25
Ответы с готовыми решениями:

Будет ли вызван деструктор?
Кто подскажет? CFileReader::CFileReader(const std::string filePath) throw (std::exception) {...

Найти номер счета который нельзя будет получить из цифр числа X заданным способом
Ограничение по времени, сек 2 Ограничение по памяти, мегабайт 64 Банк «Кисловодск» переходит на...

По данному числу Y определить номер дня, в который пробег спортсмена составил не менее Y километров
Привет всем! Решаю такую задачу: В первый день спортсмен пробежал X километров. В каждый...

В матрице целых чисел размером 3x7 определить номер столбца, который содержит наименьший элемент
В матрице целых чисел размером 3x7 определить номер столбца, который содержит наименьший элемент.

2
Модератор
1658 / 1197 / 622
Регистрация: 16.10.2013
Сообщений: 3,593
Записей в блоге: 11
09.09.2019, 09:04 2
Лучший ответ Сообщение было отмечено Pierre_Dunn как решение

Решение

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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <conio.h>
 
#include <cstdio>
#include <iostream>
#include <stdlib.h>
 
struct lift
{
    int situate;
    int sost;
    int way;
}
 
lift1, lift2, lift3;
 
void printInfoAboutLift(struct lift l); 
int toMan(int man, struct lift l);
void lift(int man, struct lift l1, struct lift l2, struct lift l3);
 
int main()
{
    int flour;
    int man;
    int l1, l2, l3;
    int min;
    printf("\nVvedite kolichestvo etajei v zdanii -> ");
    scanf("%i", &flour);
    printf("\nVvedite nomer etaja na kotorom nahoditsya chelovek -> ");
    scanf("%i", &man);
 
    printf("\nVvod informacii o lifte #1:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i) -> ", flour);
    scanf("%i", &lift1.situate);
    printf("\nLift zanyat(1) ili svoboden(0)? -> ");
    scanf("%i", &lift1.sost);
    printf("\nNapravlenie dvijeniya lifta: up(1) or down(0) -> ");
    scanf("%i", &lift1.way);
 
    printf("\nVvod informacii o lifte #2:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i) -> ", flour);
    scanf("%i", &lift2.situate);
    printf("\nLift zanyat(1) ili svoboden(0)? -> ");
    scanf("%i", &lift2.sost);
    printf("\nNapravlenie dvijeniya lifta: up(1) or down(0) -> ");
    scanf("%i", &lift2.way);
 
    printf("\nVvod informacii o lifte #3:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i) -> ", flour);
    scanf("%i", &lift3.situate);
    printf("\nLift zanyat(1) ili svoboden(0)? -> ");
    scanf("%i", &lift3.sost);
    printf("\nNapravlenie dvijeniya lifta: up(1) or down(0) -> ");
    scanf("%i", &lift3.way);
 
    printf("\nInfo about lift1:\n");
    printInfoAboutLift(lift1);
    
    printf("\nInfo about lift2:\n");
    printInfoAboutLift(lift2);
    
    printf("\nInfo about lift3:\n");
    printInfoAboutLift(lift3);
    
    lift(man, lift1, lift2, lift3);
    
    system("pause");
}
 
// печатает информацию о лифте
void printInfoAboutLift(struct lift l){
    printf("nomer etaja: %d\n", l.situate);
    printf("sost: %d\n", l.sost);
    printf("way: %d\n", l.way);
}
 
// выбор лифта, который будет вызван
void lift(int man, struct lift l1, struct lift l2, struct lift l3){
    struct lift _l = l1;
    int liftNum = 1;
    
    if((abs(man - l2.situate) < abs(man - _l.situate)) && toMan(man, l2)){
        liftNum = 2;
        _l = l2;
    }
    if((abs(man - l3.situate) < abs(man - _l.situate)) && toMan(man, l3)){
        liftNum = 3;
        _l = l3;
    }
    printf("\nBudet vizvan lift №%d", liftNum);
}
 
// движется ли лифт по направлению к человеку
int toMan(int man, struct lift l){
    if(man < l.situate && l.way == 0)
        return 1;
    if(man > l.situate && l.way == 1)
        return 1;
    return 0;
}
1
0 / 0 / 0
Регистрация: 27.10.2018
Сообщений: 35
09.09.2019, 18:47  [ТС] 3
Цитата Сообщение от long399 Посмотреть сообщение
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <conio.h>
 
#include <cstdio>
#include <iostream>
#include <stdlib.h>
 
struct lift
{
    int situate;
    int sost;
    int way;
}
 
lift1, lift2, lift3;
 
void printInfoAboutLift(struct lift l); 
int toMan(int man, struct lift l);
void lift(int man, struct lift l1, struct lift l2, struct lift l3);
 
int main()
{
    int flour;
    int man;
    int l1, l2, l3;
    int min;
    printf("\nVvedite kolichestvo etajei v zdanii -> ");
    scanf("%i", &flour);
    printf("\nVvedite nomer etaja na kotorom nahoditsya chelovek -> ");
    scanf("%i", &man);
 
    printf("\nVvod informacii o lifte #1:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i) -> ", flour);
    scanf("%i", &lift1.situate);
    printf("\nLift zanyat(1) ili svoboden(0)? -> ");
    scanf("%i", &lift1.sost);
    printf("\nNapravlenie dvijeniya lifta: up(1) or down(0) -> ");
    scanf("%i", &lift1.way);
 
    printf("\nVvod informacii o lifte #2:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i) -> ", flour);
    scanf("%i", &lift2.situate);
    printf("\nLift zanyat(1) ili svoboden(0)? -> ");
    scanf("%i", &lift2.sost);
    printf("\nNapravlenie dvijeniya lifta: up(1) or down(0) -> ");
    scanf("%i", &lift2.way);
 
    printf("\nVvod informacii o lifte #3:\n");
    printf("Nomer etaja na kotorom nahodtsya lift (ot 1 do %i) -> ", flour);
    scanf("%i", &lift3.situate);
    printf("\nLift zanyat(1) ili svoboden(0)? -> ");
    scanf("%i", &lift3.sost);
    printf("\nNapravlenie dvijeniya lifta: up(1) or down(0) -> ");
    scanf("%i", &lift3.way);
 
    printf("\nInfo about lift1:\n");
    printInfoAboutLift(lift1);
    
    printf("\nInfo about lift2:\n");
    printInfoAboutLift(lift2);
    
    printf("\nInfo about lift3:\n");
    printInfoAboutLift(lift3);
    
    lift(man, lift1, lift2, lift3);
    
    system("pause");
}
 
// печатает информацию о лифте
void printInfoAboutLift(struct lift l){
    printf("nomer etaja: %d\n", l.situate);
    printf("sost: %d\n", l.sost);
    printf("way: %d\n", l.way);
}
 
// выбор лифта, который будет вызван
void lift(int man, struct lift l1, struct lift l2, struct lift l3){
    struct lift _l = l1;
    int liftNum = 1;
    
    if((abs(man - l2.situate) < abs(man - _l.situate)) && toMan(man, l2)){
        liftNum = 2;
        _l = l2;
    }
    if((abs(man - l3.situate) < abs(man - _l.situate)) && toMan(man, l3)){
        liftNum = 3;
        _l = l3;
    }
    printf("\nBudet vizvan lift №%d", liftNum);
}
 
// движется ли лифт по направлению к человеку
int toMan(int man, struct lift l){
    if(man < l.situate && l.way == 0)
        return 1;
    if(man > l.situate && l.way == 1)
        return 1;
    return 0;
}
Спасибо, с этой задачей сам ещё вчера разобрался. Теперь со следующей встрял
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2019, 18:47

Даны координаты точки на плоскости. Определить и вывести на экран номер квадранта, в который попадает точка
ЗАДАНИЕ 1. Даны координаты точки на плоскости. Определить и вывести на эк¬ран номер квадранта, в...

Определить и напечатать значение и номер наименьшего элемента второго массива, который не входит в состав первого
С клавиатуры ввести два массива целых чисел. Определить и напечатать значение и номер наименьшего...

Определить порядковый номер того дня високосного года, который имеет заданую дату и месяц
Задание в С++ &quot;Определить порядковый номер того дня високосного года, который имеет заданую дату и...

Определить минимальный номер дня, в который Макс успеет посмотреть целиком максимальное количество серий.
Макс хочет посмотреть новый сезон любимого сериала, но никак не может найти на это время. Одна...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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