В программе вычислительной системы есть константы. Заявки генерируются каждые 5 секунд "if ((t == 0) || (t % 5 == 0))", канал 1 обрабатывает заявки 2 секунды "if (tk1 < 2)", а канал 2 обрабатывает заявки 3 секунды "if (tk2 < 3)".
Нужно изменить эти константы на случайные числа для генерации заявок (диапазон от 4 до 6) и канала 2 (диапазон от 1 до 7). А для канала 1 - случайные числа с нормальным законом распределения (закон Гаусса).
#include <iostream>
#include <locale>
#include <thread>
#include <chrono>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
cout << "Введите количество тактов: " << endl;
int tt;
cin >> tt;
int Time_I1 = 0;
int Zayavki_I1 = 0;
int Exit_I1 = 0;
int Time_I2 = 0;
int Zayavki_I2 = 0;
int Exit_I2 = 0;
int Time_I3 = 0;
int Zayavki_I3 = 0;
int Exit_I3 = 0;
int Time_I4 = 0;
int Zayavki_I4 = 0;
int Exit_I4 = 0;
int Time_I5 = 0;
int Zayavki_I5 = 0;
int Exit_I5 = 0;
int Zayavki_H1_1 = 0;
int Zayavki_H1_2 = 0;
int Zayavki_H2 = 0;
int Zayavki_H3 = 0;
int Time_K1 = 0;
int Zanyatost_K1 = 0;
int Exit_K1 = 0;
int Zayavki_K1 = 0;
int Time_K2 = 0;
int Zanyatost_K2 = 0;
int Exit_K2 = 0;
int Zayavki_K2 = 0;
int Time_Prostoi = 0;
int Exit_1 = 0;
int Exit_2 = 0;
int Exit_3 = 0;
int Exit_4 = 0;
int Exit_5 = 0;
int Exit_6 = 0;
int Exit_7 = 0;
int t = 0;
int tk1 = 0;
int tk2 = 0;
for (int time = 0; time <= tt; time++)
{
if (Zanyatost_K1 == 1)
{
if (tk1 < 2)
{
tk1++;
}
else
{
Zanyatost_K1 = 0;
Exit_K1 = 1;
}
}
if (Zanyatost_K2 == 1)
{
if (tk2 < 3)
{
tk2++;
}
else
{
Zanyatost_K2 = 0;
Exit_K2 = 1;
}
}
if (Exit_K1 == 1)
{
Exit_1++;
Exit_K1 = 0;
Zayavki_K1--;
tk1 = 0;
}
if (Exit_K2 == 1)
{
Exit_2++;
Exit_K2 = 0;
Zayavki_K2--;
tk2 = 0;
}
//Сначала описываем функционирование источников.
if ((t == 0) || (t % 5 == 0))
{
Time_I1 = 0;
Zayavki_I1++;
Exit_I1 = 1;
Time_I2 = 0;
Zayavki_I2++;
Exit_I2 = 1;
Time_I3 = 0;
Zayavki_I3++;
Exit_I3 = 1;
Time_I4 = 0;
Zayavki_I4++;
Exit_I4 = 1;
Time_I5 = 0;
Zayavki_I5++;
Exit_I5 = 1;
}
else
{
Time_I1++;
Time_I2++;
Time_I3++;
Time_I4++;
Time_I5++;
}
// Описываем работу блокираторов и накопителей.
if (Exit_I1 == 1)
{
if ((Zayavki_H1_1 + Zayavki_H1_2) < 5)
{
Zayavki_H1_1++;
Exit_I1 = 0;
}
else
{
Exit_3++;
Exit_I1 = 0;
}
}
if (Exit_I2 == 1)
{
if ((Zayavki_H1_1 + Zayavki_H1_2) < 5)
{
Zayavki_H1_1++;
Exit_I2 = 0;
}
else
{
Exit_4++;
Exit_I2 = 0;
}
}
if (Exit_I3 == 1)
{
if ((Zayavki_H1_1 + Zayavki_H1_2) < 5)
{
Zayavki_H1_2++;
Exit_I3 = 0;
}
else
{
Exit_5++;
Exit_I3 = 0;
}
}
if (Exit_I4 == 1)
{
if (Zayavki_H2 < 2)
{
Zayavki_H2++;
Exit_I4 = 0;
}
else
{
Exit_6++;
Exit_I4 = 0;
}
}
if (Exit_I5 == 1)
{
if (Zayavki_H3 < 2)
{
Zayavki_H3++;
Exit_I5 = 0;
}
else
{
Exit_7++;
Exit_I5 = 0;
}
}
if (Zanyatost_K1 == 0) //U6
{
Zanyatost_K1 = 1;
Time_K1 = 0;
Zayavki_H1_1--;
Zayavki_K1++;
}
if ((Zanyatost_K2 == 0) && (Zayavki_H2 == 0) && (Zayavki_H3 == 0)) //U7
{
Zanyatost_K2 = 1;
Time_K2 = 0;
Zayavki_H1_1--;
Zayavki_K2++;
}
if ((Zanyatost_K1 == 0) && (Zayavki_H1_1 == 0)) //U8
{
Zanyatost_K1 = 1;
Time_K1 = 0;
Zayavki_H1_2--;
Zayavki_K1++;
}
if ((Zanyatost_K2 == 0) && (Zayavki_H2 == 0) && (Zayavki_H3 == 0)) //U9
{
Zanyatost_K2 = 1;
Time_K2 = 0;
Zayavki_H1_2--;
Zayavki_K2++;
}
if ((Zanyatost_K1 == 0) && (Zayavki_H1_1 == 0)) //U10
{
Zanyatost_K1 = 1;
Time_K1 = 0;
Zayavki_H2--;
Zayavki_K1++;
}
if ((Zanyatost_K2 == 0) && (Zayavki_H2 != 0)) //U11
{
Zanyatost_K2 = 1;
Time_K2 = 0;
Zayavki_H2--;
Zayavki_K2++;
}
if ((Zanyatost_K1 == 0) && (Zayavki_H1_1 == 0)) //U12
{
Zanyatost_K1 = 1;
Time_K1 = 0;
Zayavki_H3--;
Zayavki_K1++;
}
if ((Zanyatost_K2 == 0) && (Zayavki_H3 != 0)) //U13
{
Zanyatost_K2 = 1;
Time_K2 = 0;
Zayavki_H3--;
Zayavki_K2++;
}
// Считаем время простоя, если простаивают Канал 1 и Канал 2
if ((Zanyatost_K1 == 0) && (Zanyatost_K2 == 0))
Time_Prostoi++;
t++;
}
cout << "Общее время работы ВС: " << tt << endl;
cout << endl;
cout << "Количество сгенерированных заявок: " << Zayavki_I1 + Zayavki_I2 + Zayavki_I3 + Zayavki_I4 + Zayavki_I5 << endl;
cout << "Количество сгенерированных заявок для I1: " << Zayavki_I1 << endl;
cout << "Количество сгенерированных заявок для I2: " << Zayavki_I2 << endl;
cout << "Количество сгенерированных заявок для I3: " << Zayavki_I3 << endl;
cout << "Количество сгенерированных заявок для I4: " << Zayavki_I4 << endl;
cout << "Количество сгенерированных заявок для I5: " << Zayavki_I5 << endl;
cout << endl;
cout << "Количество заявок в накопителях: " << Zayavki_H1_1 + Zayavki_H1_2 + Zayavki_H2 + Zayavki_H3 << endl;
cout << "Количество заявок в Н1_1: " << Zayavki_H1_1 << endl;
cout << "Количество заявок в Н1_2: " << Zayavki_H1_2 << endl;
cout << "Количество заявок в Н2: " << Zayavki_H2 << endl;
cout << "Количество заявок в Н3: " << Zayavki_H3 << endl;
cout << endl;
cout << "Количество заявок в каналах: " << Zayavki_K1 + Zayavki_K2 << endl;
cout << "Количество заявок в К1: " << Zayavki_K1 << endl;
cout << "Количество заявок в К2: " << Zayavki_K2 << endl;
cout << endl;
cout << "Общее число заданий, обработанных ВС до выполнения условия окончания моделирования : " << Exit_1 + Exit_2 << endl;
cout << "Количество обработанных заявок для у1: " << Exit_1 << endl;
cout << "Количество обработанных заявок для у2: " << Exit_2 << endl;
cout << endl;
cout << "Общее число потерянных заданий до выполнения условия окончания моделирования: " << Exit_3 + Exit_4 + Exit_5 + Exit_6 + Exit_7 << endl;
cout << "Количество обработанных заявок для у3: " << Exit_3 << endl;
cout << "Количество обработанных заявок для у4: " << Exit_4 << endl;
cout << "Количество обработанных заявок для у5: " << Exit_5 << endl;
cout << "Количество обработанных заявок для у6: " << Exit_6 << endl;
cout << "Количество обработанных заявок для у7: " << Exit_7 << endl;
}