' Neagu
Rares Florian
' Grade 8
' Cygnus
Computer
' Junior
Division 5 Language QBASIC
' Contest
#4 : ACSL Stacks And Queues
'
'
'
'
'
DECLARE
FUNCTION doall$ ()
DECLARE
FUNCTION STACK$ ()
DECLARE
FUNCTION queue$ ()
DECLARE
FUNCTION strtonum! (x$)
DIM
SHARED a$
a1$ =
doall$
a2$ =
doall$
a3$ =
doall$
a4$ =
doall$
a5$ =
doall$
PRINT a1$
PRINT a2$
PRINT a3$
PRINT a4$
PRINT a5$
FUNCTION
doall$
a$ =
"ABCDE"
INPUT ;
"", soq$
IF (soq$
= "S") THEN doall$ = STACK$
IF (soq$
= "Q") THEN doall$ = queue$
PRINT ""
END
FUNCTION
FUNCTION
queue$
lol$ =
"TEST"
WHILE
LEFT$(lol$, 3) <> "PRT"
INPUT ;
",", lol$
'PRINT
""
IF
LEFT$(lol$, 3) <> "SWH" THEN lolnum = strtonum(MID$(lol$, 5,
LEN(lol$) - 4))
SELECT
CASE LEFT$(lol$, 3)
CASE
"POP"
a$ =
RIGHT$(a$, LEN(a$) - lolnum)
'PRINT a$
CASE
"PSH"
a$ = a$ +
RIGHT$(lol$, 1)
'PRINT a$
CASE
"DUP"
a$ = a$ +
LEFT$(a$, lolnum)
'PRINT a$
CASE
"SWP"
'
abcdeabcde -> decab
leftul$ =
RIGHT$(a$, lolnum)
rightul$
= LEFT$(a$, lolnum)
FOR i = 1
TO lolnum
MID$(a$, i, 1) = MID$(rightul$, i, 1)
NEXT i
j = 1
FOR i =
LEN(a$) - lolnum + 1 TO LEN(a$)
MID$(a$, i, 1) = MID$(leftul$, j, 1)
j = j + 1
NEXT i
'PRINT
""
'PRINT a$
'PRINT
""
'PRINT
leftul$
'PRINT
rightul$
CASE
"SWH"
queue$ =
STACK$
GOTO 1
END
SELECT
'PRINT
""
WEND
queue$ =
LEFT$(a$, strtonum(MID$(lol$, 5, LEN(lol$) - 4)))
1
'PRINT
""
END
FUNCTION
FUNCTION
STACK$
lol$ =
"TEST"
WHILE
LEFT$(lol$, 3) <> "PRT"
INPUT ;
",", lol$
'PRINT
""
IF
LEFT$(lol$, 3) <> "SWH" THEN lolnum = strtonum(MID$(lol$, 5,
LEN(lol$) - 4))
SELECT
CASE LEFT$(lol$, 3)
CASE
"POP"
a$ =
LEFT$(a$, LEN(a$) - lolnum)
'PRINT a$
CASE
"PSH"
a$ = a$ +
RIGHT$(lol$, 1)
'PRINT a$
CASE
"DUP"
a$ = a$ +
LEFT$(a$, lolnum)
'PRINT a$
CASE
"SWP"
'
abcdeabcde -> decab
leftul$ =
LEFT$(a$, lolnum)
rightul$ =
RIGHT$(a$, lolnum)
FOR i = 1
TO lolnum
MID$(a$, i, 1) = MID$(rightul$, i, 1)
NEXT i
j = 1
FOR i =
LEN(a$) - lolnum + 1 TO LEN(a$)
MID$(a$, i, 1) = MID$(leftul$, j, 1)
j = j + 1
NEXT i
'PRINT
""
'PRINT a$
'PRINT
""
'PRINT
leftul$
'PRINT
rightul$
CASE
"SWH"
STACK$ =
queue$
GOTO 2
END
SELECT
'PRINT
""
WEND
STACK$ =
RIGHT$(a$, strtonum(MID$(lol$, 5, LEN(lol$) - 4)))
2
'PRINT
""
END
FUNCTION
FUNCTION
strtonum (x$)
numar = 0
FOR i = 1
TO LEN(x$)
numar = numar * 10 + ASC(MID$(x$, i,
1)) - ASC("0")
NEXT i
strtonum
= numar
END
FUNCTION