129
ПРИЛОЖЕНИЕ 3
actualPassengers, averagePassengers = getTrafficCapacity();
actualTrains, actualIntervals, actualSpeed = getActualParameters();
lineCapacity, trainsCapacity, trainsSitPlaces, lineMaxSpeed, availableTrains = getLineParameters();
map<char, float> pClass;
pClass['A'] = trainsCapacity / 10 * 0 + trainsSitPlaces;
pClass['B'] = trainsCapacity / 10 * 1 + trainsSitPlaces;
pClass['C'] = trainsCapacity / 10 * 3 + trainsSitPlaces;
pClass['D'] = trainsCapacity / 10 * 4 + trainsSitPlaces;
pClass['E'] = trainsCapacity / 10 * 5 + trainsSitPlaces;
if (availableTrains <= lineCapacity) {
lineCapacity = availableTrains;
}
actualLinePassengersCapacity = actualTrains * trainsCapacity;
maxLinePassengerCapacity = lineCapacity * trainsCapacity;
time_t actualTime = time(0);
int time = (actualTime + 10800) % 86400;
if (actualPassengers < actualLinePassengersCapacity) {
if (actualTime < 25200 || actualTime > 75600) {
checkClassCapacity = pClass['A'] * lineCapacity;
checkMaxClassCapacity = pClass['B'] * lineCapacity;
if ((actualPassengers > checkClassCapacity && actualPassengers <= checkMaxClassCapacity) ||
actualPassengers < checkClassCapacity) {
checkClass = 'A';
checkClassCapacity = pClass['A'];
checkMaxClassCapacity = pClass['B'];
classCapacity = (checkClassCapacity + checkMaxClassCapacity) / 2;
recommendTrains = actualPassengers / classCapacity;
recommendIntervals = 7200 / recommendTrains;
recommendSpeed = (42.2 * 2) / (recommendTrains * recommendIntervals) * 3600;
if (actualTime < 14400) {
if (recommendIntervals > 360) {
recommendIntervals = 360;
}
checkTrains = 7200 / recommendIntervals;
int i = 0;
while (i < 1) {
checkSpeed = (42.2 * 2) / (checkTrains * recommendIntervals) * 3600;
if (checkSpeed <= lineMaxSpeed) {
if (checkTrains < lineCapacity) {
recommendIntervals -= 10;
checkTrains = 7200 / recommendIntervals;
checkSpeed = (42.2 * 2) / (checkTrains * recommendIntervals) * 3600;
}
else {
recommendTrains = checkTrains;
recommendSpeed = checkSpeed;
break;
}
}
else {
checkTrains += 1;
if (checkTrains >= lineCapacity) {
checkTrains = lineCapacity;
}
if (recommendIntervals > 90) {
recommendIntervals -= 10;
}
}
}