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

Смоделировать обслуживание 200 вызовов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Форматирование Текста.С++ http://www.cyberforum.ru/cpp-beginners/thread711054.html
Тексты считают заданными в виде файлов, например, произвольную часть электронной версии книги. Размер такой части должен быть не менее, чем 10кБ. Язык текста произвольный. Словом называется та часть текста,которая располагается между двумя пробелы. Если в конце слова есть знак, например, точка, запятая и т.д., этот знак не считается частью слова, за исключением тех случаев, когда точка является...
C++ Поиск кратчайшего слова Помогите эту программу переделать другим способом! #include <iostream> #include <string.h> #include <conio.h> #include <stdio.h> using namespace std; int main() { char x; http://www.cyberforum.ru/cpp-beginners/thread711050.html
C++ Вывод числа из набора случайным образом (в цикле)
Нужно написать программу в цикле которая будет печатать число из набора: "2, 4, 6, 8, 10", случайным образом. В программе желательно чтобы присутствовали переключатель "switch", и функции "rand" или "srand". Зранее спасибо!
C++ Функция в потоке
Помогите разобраться с потоками : void F(bool x, int i, bool y) {} int main() { _beginthread ... // Как мне открыть функцию F потоке ??? Какие параметры???
C++ Как понять: массив указателей на объекты классов? http://www.cyberforum.ru/cpp-beginners/thread710998.html
если приведете пример буду рад.
C++ Число в виде массива множителей Подскажите, как целое число представить в виде массива его простых множителей? подробнее

Показать сообщение отдельно
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
27.11.2012, 19:57     Смоделировать обслуживание 200 вызовов
Здравствуйте! Помогите пожалуйста с программой необходимо:

Пять операторов работают в справочной телефонной сети города, сообщая номера телефонов по запросам абонентов, которые обращаются по одному номеру 09. Автоматический коммутатор переключает абонента на того оператора, в очереди которого ожидает наименьшее количество абонентов, причем наибольшая допустимая длина очереди перед оператором - два абонента. Если все очереди имеют максимальную длину, вновь поступивший вызов получает отказ. Обслуживание абонентов операторами длится 30 ± 20 с. Вызовы поступают в справочную через каждые 5 + 3 с.
Смоделировать обслуживание 200 вызовов. Подсчитать количество отказов. Определить коэффициенты загрузки операторов справочной.

Вот мой вариант программы, но неправильно считает отклоненные заявки и неправильно выводит информацию.
И не могу реализовать программу для 5 операторов

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
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
 
using namespace std;
 
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
using namespace std;
 
 
int main()
{
  srand ( time(NULL) );
  setlocale(LC_ALL, "Russian");
  ofstream file1("data.txt");
  //ifstream file2("data.txt");
  int t_oz; // время, необходимое для выполнения заявки 
  int t_pz; //интервал времени поступления заявок в накопитель 
  int gen_z = 5;
 
 
  int Twork1 = 0, Twork2 = 0; //операторы 1 и 2
  int L = 0;
  int zaniat1 = 0, zaniat2 = 0; // состояние  операторов
  int Time = 600; // время моделирования
//  int i = 0; //счетчик количества обслуживаемых заявок 
  int n = 0;
  int j1 = 0, j2 = 0; // флаги, управляющие окончанием процессов в К1 и К2
  //int j3 = 0, j4 = 0;
  int No = 0; // // число обработанных заявок  
  int Nn = 0; // число не обработанных заявок  
  int T = 0;
  float K1, K2; // коэффициенты загрузки 1 и 2 оператора
 
 
 
 
step_1:
 
 
  if(T >= Time && L == 0)
  {
 
    cout << "Число обработанных заявок = " <<  No << endl;
    cout << "Число не обработанных заявок = " <<  Nn << endl;
    cout << "Коэфициент загрузки оператора 1 = " << K1 << endl;
    cout << "Коэфициент загрузки оператора 2 = " <<  K2 << endl;
    exit(0);
  }
 
  if(zaniat1 == 1)
  {
 
      if(j1 == 0)
      {
          t_oz = 4 + rand() % 21;
          j1 = T + t_oz;
          Twork1 += t_oz;
          
 
      }
  if(T == j1)
  {
      No++;
      zaniat1 = 0;
      j1 = 0;
      L = 0;
  }
    
   if(gen_z <= 0)
    zaniat2 = 1;
   else
    zaniat1 = 1;
 
  }
 
   if(zaniat2 == 1)
  {
      if(j2 == 0)
      {
          t_oz = 4 + rand() % 21;
          j2 = T + t_oz;
          Twork2 += t_oz;
          
 
      }
  if(T == j2)
  {
      No++; zaniat2 = 0; j2 = 0;
  }
   if(gen_z <= 5)
    zaniat2 = 1;
   else
    zaniat1 = 1;
  }
 
 
  if((zaniat1 == 0 || zaniat2 == 0 ) && L > 0)
 {
 
 
    if(gen_z <= 5)
    if(zaniat1 == 1){ zaniat2 = 1; L--; }
    else { zaniat1 = 1; L--; }
 else { zaniat2 = 1; L--; }
 
 
 }
 
 
 
   if(T >= Time) { T++; goto step_1; }
 
  t_pz = 1 + rand() % 10;
   if(T <= t_pz){ T++;   goto step_1; }
   else
   {
   if(L < 5) L++;
   else Nn++;
   T++; n++;
   }
 
    file1 << "Tsys = " << T ;
    file1  << "  L = " << L ;
    file1  << "  z1 = " << zaniat1 ;
    file1  << "  z2 = " << zaniat2 ;
    file1  << "  T1 = " << Twork1;
    file1  << "  T2 = " << Twork2;
    file1  << "  No = " << No ;
    file1  << "  Nn = " << Nn << endl;
 
  K1 = int(10000 * Twork1 / T) / 100.0;
  K2 = int(10000 * Twork2 / T) / 100.0;
 
 
goto step_1;
 
 
return 0;
}
Добавлено через 1 час 50 минут
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
using namespace std;
 
 
int main()
{
  srand ( time(NULL) );
  setlocale(LC_ALL, "Russian");
  ofstream file1("list.txt");
  int timeproc; // время, необходимое для выполнения заявки
  int intertime; //интервал времени поступления заявок в накопитель
  int gen_z = 5;
 
 
  int op1 = 0; //operator 1
  int op2 = 0; //operator 2
  int op3 = 0;
  int op4 = 0;
  int op5 = 0;
  float K1;
  float K2; // коэффициенты загрузки
  float K3;
  float K4;
  float K5;
  int L = 0;
  int busy1 = 0;
  int busy2 = 0; // состояние  операторов
  int busy3 = 0;
  int busy4 = 0;
  int busy5 = 0;
  int Time = 600; // время моделирования 10 часов
  int n = 0;
  int j1 = 0;
  int j2 = 0; // флаги, управляющие окончанием процессов в К1 и К2
  int j3 = 0;
  int j4 = 0;
  int j5 = 0;
  int No = 0; // // число обработанных заявок
  int Nn = 0; // число не обработанных заявок
  int T = 0;
 
 
 
step_1:
 
 
  if(T >= Time && L == 0)
  {
 
    cout << "Количество обработанных заявок = " <<  No << endl;
    cout << "Количество не обработанных заявок = " <<  Nn << endl;
    cout << "Коэфициент загрузки оператора 1 = " << K1 << endl;
    cout << "Коэфициент загрузки оператора 2 = " <<  K2 << endl;
    cout << "Коэфициент загрузки оператора 3 = " <<  K3 << endl;
    cout << "Коэфициент загрузки оператора 4 = " <<  K4 << endl;
    cout << "Коэфициент загрузки оператора 5 = " <<  K5 << endl;
    exit(0);
  }
 
  if(busy1 == 1)
  {
 
      if(j1 == 0)
      {
          timeproc = 4 + rand() % 21;
          j1 = T + timeproc;
          op1 += timeproc;
 
 
      }
  if(T == j1)
  {
      No++;
      busy1 = 0;
      j1 = 0;
      L = 0;
  }
 
   if(gen_z <= 0)
    busy2 = 1;
   else
    busy1 = 1;
 
  }
 
   if(busy2 == 1)
  {
      if(j2 == 0)
      {
          timeproc = 4 + rand() % 21;
          j2 = T + timeproc;
          op2 += timeproc;
 
 
      }
  if(T == j2)
  {
      No++; busy2 = 0; j2 = 0;
  }
   if(gen_z <= 5)
    busy2 = 1;
   else
    busy1 = 1;
  }
//-----------------------------------------------------------
 
 if(busy3 == 1)
  {
      if(j3 == 0)
      {
          timeproc = 4 + rand() % 21;
          j3 = T + timeproc;
          op3 += timeproc;
 
 
      }
  if(T == j3)
  {
      No++; busy2 = 0; j3 = 0;
  }
   if(gen_z <= 5)
    busy3 = 1;
   else
    busy2 = 1;
  }
 
//------------------------------------------------
 if(busy4 == 1)
  {
      if(j2 == 0)
      {
          timeproc = 4 + rand() % 21;
          j4 = T + timeproc;
          op4 += timeproc;
 
 
      }
  if(T == j4)
  {
      No++; busy4 = 0; j4 = 0;
  }
   if(gen_z <= 5)
    busy4 = 1;
   else
    busy3 = 1;
  }
 
  //-------------------------------------------
   if(busy5 == 1)
  {
      if(j5 == 0)
      {
          timeproc = 4 + rand() % 21;
          j5 = T + timeproc;
          op5 += timeproc;
 
 
      }
  if(T == j5)
  {
      No++; busy5 = 0; j5 = 0;
  }
   if(gen_z <= 5)
    busy5 = 1;
   else
    busy4 = 1;
  }
 
  if((busy1 == 0 || busy2 == 0 || busy3 == 0 || busy4 == 0 || busy5 == 0 ) && L > 0)
 {
 
 
    if(gen_z <= 5)
    if(busy1 == 1){ busy2 = 1; L--; }
    else { busy1 = 1; L--; }
 else { busy2 = 1; L--; }
 
 
 
 }
 
 
 
   if(T >= Time) { T++; goto step_1; }
 
  intertime = 1 + rand() % 10;
   if(T <= intertime){ T++;   goto step_1; }
   else
   {
   if(L < 5) L++;
   else Nn++;
   T++; n++;
   }
 
    file1 << "Tsys = " << T ;
    file1  << "  L = " << L ;
    file1  << "  z1 = " << busy1 ;
    file1  << "  z2 = " << busy2 ;
    file1  << "  T1 = " << op1;
    file1  << "  T2 = " << op2;
    file1  << "  No = " << No ;
    file1  << "  Nn = " << Nn << endl;
 
  K1 = int(10000 * op1 / T) / 100.0;
  K2 = int(10000 * op2 / T) / 100.0;
 
 
goto step_1;
 
 
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru