You are on page 1of 2

NAMA: DHAFIN GHALIB LUQMAN HAKIM

NIM: 18221023

SOAL 1

function isKataEqual (k1,k2 : kata) -> boolean

KAMUS LOKAL
USE MesinKata3
kataPertama : kata
jumlahKataPertama : integer
totalKata : integer
procedure CopyKata (input k1 : kata, input/output k2 : kata)

ALGORITMA
initAkses
if (cc=Mark) then
output("Pita Karakter Kosong")
else
advKata
totalKata <- 1
jumlahKataPertama <- 1
CopyKata (CUrrentKata, kataPertama)
while (cc!=Mark) do
advKata
if isKataEqual (kataPertama, CUrrentKata) then
jumlahKataPertama <- jumlahKataPertama + 1
totalKata <- totalKata + 1
output(jumlahKataPertama, '/', totalKata

SOAL 2

function IsAnagram (k1, k2 : Kata) -> boolean

KAMUS LOKAL
i : integer
found : boolean
function Count(C : character, k : Kata) -> integer

ALGORITMA
if (k1.Length = k2.Length) then
i <- 0
found <- false
while i < k1.Length and not found do
if (Count(k1.TabKata,k1) != Count(k1.TabKata,k2)) then
found <- true
else
i <- i + 1
-> not found
else
-> false

SOAL 3

function operasiInfix (operan1, operan2, operator: Kata) → Kata

KAMUS LOKAL
temp: Kata
i, j: integer
ALGORITMA
i ← 0
temp.buffer[i] ← "("
i ← i + 1
j traversal [0..operan1.length-1]
temp.buffer[i] ← operan1.buffer[j]
i ← i + 1
temp.buffer[i] ← BLANK
i ← i + 1
temp.buffer[i] ← operator.buffer[0]
i ← i + 1
temp.buffer[i] ← BLANK
i ← i + 1
j traversal [0..operan2.length-1]
temp.buffer[i] ← operan2.buffer[j]
i ← i + 1
temp.buffer[i] ← ")"
i ← i + 1
temp.length ← i

→ temp

function isOperator (operator: Kata) → boolean

KAMUS
-

ALGORITMA
→ ( operator.buffer[0] = "+" or
operator.buffer[0] = "-" or
operator.buffer[0] = "*" or
operator.buffer[0] = "/" or
operator.buffer[0] = "^' )

Program mesinToken

KAMUS LOKAL
use MesinKata1
infix : Array [0..N_MAX-1] of Kata
newInfix : Kata
i : integer

ALGORITMA
startKata
i ← 0
while not endKata do
if (not(isOperator(currentKata)) then
infix[i].buffer ← currentKata.buffer
infix[i].length ← currentKata.length
i ← i + 1
else
newInfix ← operasiInfix(infix[i-2], infix[i-1], currentKata)
infix[i-2] ← newInfix
i ← i - 1
advKata

output(infix[0])

You might also like