DZ4

Форк
0
/
project4.cpp 
105 строк · 5.5 Кб
1
//Создать имитационную модель "остановка маршрутных
2
//такси". Необходимо вводить следующую информацию:
3
//среднее время между появлениями пассажиров на остановке в разное время суток, среднее время между появлениями маршруток на остановке в разное время суток,
4
//тип остановки(конечная или нет).Необходимо определить : среднее время пребывание человека на остановке,
5
//достаточный интервал времени между приходами маршруток, чтобы на остановке находилось не более N людей
6
//одновременно.Количество свободных мест в маршрутке
7
//является случайной величиной.
8
#include <iostream>
9
#include <cstdlib>
10
#include <ctime>
11

12
using namespace std;
13

14
// Глобальные переменные
15
int passengers = 0; // Количество пассажиров на остановке
16
int waitingTimeTotal = 0; // Общее время ожидания пассажиров
17
int busesArrivalTime = 0; // Время до прибытия следующей маршрутки
18
int busCapacity = 20; // Вместимость маршрутки
19

20
// Функция для генерации случайного числа в заданных пределах
21
int getRandomNumber(int min, int max) {
22
    return rand() % (max - min + 1) + min;
23
}
24

25
// Функция для имитации прибытия пассажиров
26
void simulatePassengerArrival(int averageTime) {
27
    int arrivalTime = getRandomNumber(1, averageTime);
28

29
    // Обновляем количество пассажиров и суммарное время ожидания
30
    passengers++;
31
    waitingTimeTotal += arrivalTime;
32

33
    // Выводим информацию о прибытии пассажира
34
    cout << "Пассажир прибыл. Время до следующего прибытия: " << arrivalTime << " минут.\n";
35
}
36

37
// Функция для имитации прибытия маршрутки
38
void simulateBusArrival(int averageTime, int maxPassengers) {
39
    int arrivalTime = getRandomNumber(1, averageTime);
40

41
    // Обновляем время до прибытия следующей маршрутки
42
    busesArrivalTime = arrivalTime;
43

44
    // Выводим информацию о прибытии маршрутки
45
    cout << "Маршрутка прибыла. Время до следующей маршрутки: " << arrivalTime << " минут.\n";
46

47
    // Проверяем, есть ли свободные места в маршрутке
48
    int freeSeats = busCapacity - passengers;
49
    if (freeSeats < maxPassengers) {
50
        cout << "В маршрутке осталось мало свободных мест, она уезжает.\n";
51
    }
52
    else {
53
        passengers = 0;
54
        cout << "Пассажиры сели в маршрутку. Уехала.\n";
55
    }
56
}
57

58
int main() {
59
    srand(time(0)); // Инициализация генератора случайных чисел
60

61
    int averagePassengerArrivalTime, averageBusArrivalTime, maxPassengers;
62
    char stopType;
63

64
    // Ввод пользовательских данных
65
    cout << "Введите среднее время между прибытием пассажиров на остановку (в минутах): ";
66
    cin >> averagePassengerArrivalTime;
67

68
    cout << "Введите среднее время между прибытием маршруток на остановку (в минутах): ";
69
    cin >> averageBusArrivalTime;
70

71
    cout << "Введите тип остановки (к - конечная, н - не конечная): ";
72
    cin >> stopType;
73

74
    cout << "Введите максимальное количество пассажиров на остановке одновременно: ";
75
    cin >> maxPassengers;
76

77
    // Цикл имитации работы остановки
78
    while (true) {
79
        // Имитация прибытия пассажиров
80
        simulatePassengerArrival(averagePassengerArrivalTime);
81

82
        // Проверка наличия маршрутки на остановке
83
        if (busesArrivalTime == 0) {
84
            simulateBusArrival(averageBusArrivalTime, maxPassengers);
85
        }
86
        else {
87
            busesArrivalTime--;
88
            cout << "Времени до следующей маршрутки: " << busesArrivalTime << " минут.\n";
89
            if (busesArrivalTime == 0) {
90
                simulateBusArrival(averageBusArrivalTime, maxPassengers);
91
            }
92
        }
93

94
        // Подсчёт среднего времени пребывания пассажиров на остановке
95
        float averageWaitingTime = (float)waitingTimeTotal / passengers;
96
        cout << "Среднее время пребывания пассажиров на остановке: " << averageWaitingTime << " минут.\n";
97

98
        // Завершение работы программы, если на тип "конечная" и маршрутка уехала
99
        if (stopType == 'к' && busesArrivalTime == 0) {
100
            break;
101
        }
102
    }
103

104
    return 0;
105
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.