simulation/SIMULA~1.CPP
simulation/SIMULA~1.CPP
#include
<
iostream
.
h
>
#include
<
stdlib
.
h
>
struct
customers
{
int
cust_id
;
long
wait_time
;
int
count_time
;
int
entry_time
;
int
cashier_number
;
int
serve_time
;
int
token_no
;
};
struct
cashier
{
int
cashier_id
;
int
cust_served
;
int
total_serve_time
;
};
void
main
()
{
int
counter
=
1
;
int
serve_time
=
0
;
customers cust_obj
[
100
];
cashier cashier_obj
[
2
];
int
d
=
1
;
for
(
int
i
=
0
;
i
<
100
;
i
++
)
{
cust_obj
[
i
].
cust_id
=
d
;
d
++
;
}
int
number_of_customers
;
cashier_obj
;
int
choice
;
cout
<<
"Enter 1 to start simulation:\n"
;
cin
>>
choice
;
int
f
=
10
;
for
(
int
q
=
0
;
q
<
100
;
q
++
)
cust_obj
[
q
].
wait_time
=-
1
;
for
(
q
=
0
;
q
<
100
;
q
++
)
cust_obj
[
q
].
serve_time
=-
1
;
if
(
choice
==
1
)
{
cust_obj
[
0
].
cashier_number
=
1
;
cust_obj
[
0
].
token_no
=
1
;
cust_obj
[
1
].
cashier_number
=
1
;
cust_obj
[
1
].
wait_time
=
0
;
cust_obj
[
1
].
serve_time
=
0
;
cust_obj
[
1
].
token_no
=
2
;
cust_obj
[
2
].
cashier_number
=
1
;
cust_obj
[
2
].
wait_time
=
0
;
cust_obj
[
2
].
serve_time
=
0
;
cust_obj
[
2
].
token_no
=
3
;
cust_obj
[
3
].
cashier_number
=
1
;
cust_obj
[
3
].
wait_time
=
0
;
cust_obj
[
3
].
serve_time
=
0
;
cust_obj
[
3
].
token_no
=
4
;
cust_obj
[
4
].
cashier_number
=
1
;
cust_obj
[
4
].
token_no
=
5
;
cust_obj
[
4
].
wait_time
=
0
;
cust_obj
[
4
].
serve_time
=
0
;
cust_obj
[
5
].
cashier_number
=
2
;
cust_obj
[
5
].
token_no
=
1
;
cust_obj
[
5
].
wait_time
=
0
;
cust_obj
[
5
].
serve_time
=
0
;
cust_obj
[
6
].
cashier_number
=
2
;
cust_obj
[
6
].
token_no
=
2
;
cust_obj
[
6
].
wait_time
=
0
;
cust_obj
[
6
].
serve_time
=
0
;
cust_obj
[
7
].
cashier_number
=
2
;
cust_obj
[
7
].
token_no
=
3
;
cust_obj
[
7
].
wait_time
=
0
;
cust_obj
[
7
].
serve_time
=
0
;
cust_obj
[
8
].
cashier_number
=
2
;
cust_obj
[
8
].
token_no
=
4
;
cust_obj
[
8
].
wait_time
=
0
;
cust_obj
[
8
].
serve_time
=
0
;
cust_obj
[
9
].
cashier_number
=
2
;
cust_obj
[
9
].
token_no
=
5
;
cust_obj
[
9
].
wait_time
=
0
;
cust_obj
[
9
].
serve_time
=
0
;
cashier_obj
[
0
].
cashier_id
=
1
;
cashier_obj
[
1
].
cashier_id
=
2
;
cust_obj
[
0
].
entry_time
=
0
;
cust_obj
[
1
].
entry_time
=
0
;
cust_obj
[
2
].
entry_time
=
0
;
cust_obj
[
3
].
entry_time
=
0
;
cust_obj
[
4
].
entry_time
=
0
;
cust_obj
[
5
].
entry_time
=
0
;
cust_obj
[
6
].
entry_time
=
0
;
cust_obj
[
7
].
entry_time
=
0
;
cust_obj
[
8
].
entry_time
=
0
;
cust_obj
[
9
].
entry_time
=
0
;
cust_obj
[
0
].
count_time
=
0
;
cust_obj
[
1
].
count_time
=
0
;
cust_obj
[
2
].
count_time
=
0
;
cust_obj
[
3
].
count_time
=
0
;
cust_obj
[
4
].
count_time
=
0
;
cust_obj
[
5
].
count_time
=
0
;
cust_obj
[
6
].
count_time
=
0
;
cust_obj
[
7
].
count_time
=
0
;
cust_obj
[
8
].
count_time
=
0
;
cust_obj
[
9
].
count_time
=
0
;
int
token_first_cashier
;
int
token_second_cashier
;
int
counter_one_serve_token
=
6
;
int
counter_two_serve_token
=
6
;
int
z
=
0
;
cashier_obj
[
0
].
total_serve_time
=
0
;
cashier_obj
[
1
].
total_serve_time
=
0
;
while
(
counter
)
{
for
(;
z
<=
99
;
z
++
)
{
if
(
cust_obj
[
z
].
cashier_number
==
1
)
{
cust_obj
[
z
].
serve_time
=
rand
()
%
10
+
1
;
cashier_obj
[
0
].
total_serve_time
+=
cust_obj
[
z
].
serve_time
;
}
if
(
cust_obj
[
z
].
cashier_number
==
2
)
{
cust_obj
[
z
].
serve_time
=
rand
()
%
10
+
1
;
cashier_obj
[
1
].
total_serve_time
+=
cust_obj
[
z
].
serve_time
;
}
for
(
int
x
=
0
;
x
<
100
;
x
++
)
{
if
(
cust_obj
[
x
].
serve_time
==
0
&&
cust_obj
[
x
].
wait_time
!=-
1
)
{
cust_obj
[
x
].
wait_time
+=
cust_obj
[
z
].
serve_time
;
}
}
for
(
int
k
=
1
;
k
<=
cust_obj
[
z
].
serve_time
;
k
++
)
{
if
(
f
<=
100
)
{
int
check1
=
rand
()
%
2
;
if
(
check1
!=
0
&&
cust_obj
[
f
].
cashier_number
==
0
&&
cust_obj
[
z
].
cashier_number
==
1
)
{
for
(
int
d
=
1
;
d
<=
check1
&&
f
<
100
;
d
++
)
{
cust_obj
[
f
].
entry_time
=
check1
;
cust_obj
[
f
].
wait_time
=
0
;
cust_obj
[
f
].
serve_time
=
0
;
cust_obj
[
f
].
cashier_number
=
1
;
counter_one_serve_token
++
;
cust_obj
[
f
].
token_no
=
counter_one_serve_token
;
f
++
;
}
}
int
check2
=
rand
()
%
2
;
if
(
check2
!=
0
&&
cust_obj
[
f
].
cashier_number
==
0
&&
cust_obj
[
z
].
cashier_number
==
2
)
{
for
(
int
d
=
1
;
d
<=
check2
&
f
<
100
;
d
++
)
{
cust_obj
[
f
].
entry_time
=
rand
()
%
10
+
1
;
cust_obj
[
f
].
cashier_number
=
2
;
cust_obj
[
f
].
wait_time
=
0
;
cust_obj
[
f
].
serve_time
=
0
;
counter_two_serve_token
++
;
cust_obj
[
z
].
token_no
=
counter_two_serve_token
;
f
++
;
}
}
}
}
}
int
check_serve
=
0
;
int
check_wait
=
0
;
for
(
int
b
=
0
;
b
<
100
;
b
++
)
{
if
(
cust_obj
[
b
].
wait_time
>=
0
)
{
check_wait
++
;
}
if
(
cust_obj
[
b
].
serve_time
>=
0
&&
cust_obj
[
b
].
wait_time
>=
0
)
{
check_serve
++
;
}
}
if
(
check_serve
==
check_wait
)
break
;
else
{
cout
<<
"Wrong Input"
;
}
}
}
cout
<<
"TIME\n"
;
cout
<<
"Number of cashiers:2\n"
;
cout
<<
"Number of customers:100\n"
;
cout
<<
"Total time served by Cashier 1:"
<<
cashier_obj
[
0
].
total_serve_time
<<
"\n"
;
cout
<<
"Total time served by Cashier 2:"
<<
cashier_obj
[
1
].
total_serve_time
<<
"\n"
;
int
average_wait
=
0
;
for
(
int
g
=
0
;
g
<
100
;
g
++
)
{
average_wait
+=
cust_obj
[
g
].
wait_time
;
}
cout
<<
"Average Wait:"
<<
(
average_wait
=
average_wait
/
100
)
<<
"\n"
;
cout
<<
"Longest wait for 30 minutes:\n"
;
for
(
g
=
0
;
g
<
100
;
g
++
)
{
if
(
cust_obj
[
g
].
wait_time
>=
30
&&
cust_obj
[
g
].
wait_time
<
60
)
average_wait
+=
cust_obj
[
g
].
wait_time
;
}
cout
<<
"Longest wait for 60 minutes:\n"
;
for
(
g
=
0
;
g
<
100
;
g
++
)
{
if
(
cust_obj
[
g
].
wait_time
>=
60
&&
cust_obj
[
g
].
wait_time
<
120
)
cout
<<
"Customer number:"
<<
cust_obj
[
g
].
cust_id
<<
"\n"
;
}
cout
<<
"Longest wait for 120 minutes:\n"
;
for
(
g
=
0
;
g
<
100
;
g
++
)
{
if
(
cust_obj
[
g
].
wait_time
>=
120
&&
cust_obj
[
g
].
wait_time
<
480
)
cout
<<
"Customer number:"
<<
cust_obj
[
g
].
cust_id
<<
"\n"
;
}
cout
<<
"Longest wait for 480 minutes:\n"
;
for
(
g
=
0
;
g
<
100
;
g
++
)
{
if
(
cust_obj
[
g
].
wait_time
>=
480
)
cout
<<
"Customer number:"
<<
cust_obj
[
g
].
cust_id
<<
"\n"
;
}
}