class theQueue
export enter, leave, display, listupper
var list : flexible array 1 .. 0 of int
var listupper : int := 0
proc enter (enternum : int) %enter
if listupper < 17 then
new list, upper (list) + 1
list (upper (list)) := enternum
listupper := upper (list)
end if
end enter
fcn leave : real %leave (real so if the result is not an integer,
%array is empty)
var temp : int
if upper (list) > 0 then
temp := lower (list)
for i : 1 .. upper (list) - 1
list (i) := list (i + 1)
end for
new list, upper (list) - 1
listupper := upper (list)
result intreal (temp)
else
result .1
end if
end leave
proc display %display
if upper (list) > 0 then
for i : 1 .. upper (list)
put list (i)
end for
else
put "nothing in list"
end if
end display
end theQueue
%%%%%MAINLINE%%%%%
var queue : ^theQueue
new queue
var count : int := 0
var last : int := 0
var temp : real
loop
case Rand.Int (1, 5) of
label 1 :
count += 1
queue -> enter (count)
label 2 :
temp := queue -> leave
label 3 :
label 4 :
count += 1
queue -> enter (count)
count += 1
queue -> enter (count)
label 5 :
temp := queue -> leave
temp := queue -> leave
end case
cls
exit when last = 601
queue -> display
locate (3, 5)
put last ..
locate (4, 5)
put count ..
delay (250)
last += 1
end loop
queue -> display
put "\nDone"
|