12/11/21, 4:43 PM Lab Activity 4.
Stack (page 2 of 2)
Soal 2
Benar Poin 50,00 dari 50,00
Tuliskan sebuah fungsi dengan nama infix_to_postfix yang mengubah sebuah ekspresi aritmatika dalam notasi infix menjadi notasi
postfix menggunakan struktur Stack. Penjelasan mengenai notasi infix, notasi postfix, dan algoritma konversi notasi infix ke
notasi postfix
dapat dilihat pada file berikut: PenjelasanInfixdanPostfix.
Fungsi infix_to_postfix yang Anda tulis harus menerima sebuah argument string berupa ekspresi aritmatika dalam notasi infix dan
mengembalikan sebuah string berupa ekspresi aritmatika dalam notasi postfix. Sebagai contoh: pemanggilan fungsi:
infix_to_postfix('A+B') mengembalikan sebuah string 'AB+' yang merupakan notasi postfix ekuivalen dari notasi infix 'A+B'.
Asumsikan hal-hal berikut:
Operand hanya berupa huruf besar: A s.d Z.
Operator hanya berupa: +, -, *, dan /.
Tidak ada spasi diantara opreator, operand, maupun tanda kurung pada notasi infix yang diberikan sebagai argument.
Notasi infix yang diberikan sebagai argument selalu mempunyai tanda kurung yang seimbang.
Notasi postfix yang dikembalikan fungsi infix_to_postfix hanya terdiri dari operand dan operator (tidak ada spasi diantara operator
dan operand).
Petunjuk:
Gunakan fungsi precedence pada kotak jawaban untuk mendapatkan level precedence dari operator.
Pada kotak jawaban terdapat kerangka fungsi infix_to_postfix dengan comment-comment yang berisi panduan implementasi.
Ikuti algoritma konversi notasi infix ke notasi postfix pada file penjelasan yang dilampirkan di atas.
Download module yang berisi implementasi ADT Stack pada file berikut: linkedliststack.py.
Answer: (penalty regime: 0 %)
Reset answer
1 from linkedliststack import Stack
2
3 # Fungsi precendence menerima string (karakter) operator
4 # dan mengembalikan level precedence dari operator tersebut.
5▼ def precedence(operator):
6▼ if (operator == '*' or operator == '/'):
7 return 2
8▼ elif (operator == '+' or operator == '-'):
9 return 1
10
11 # Fungsi infix_to_postfix menerima string berupa ekspresi aritmatika
12 # dalam notasi infix, dan mengembalikan sebuah string berupa ekspresi
13 # aritmatika dalam notasi postfix yang ekuivalen dengan argument.
14 ▼ def infix_to_postfix(infix):
15 opStack = Stack()
16 postfix = ''
17 operand = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
18
19 # Scan karakter per karakter dari string infix
20 ▼ for token in infix:
21 opStack = Stack()
22 postfix = ''
23 operand = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
24
25 # Scan karakter per karakter dari string infix
Precheck Periksa
Pengujian Output diharapkan Output Anda
1 Ekspresi infix: (A+(C+D*F+T*A)*B/C)
Ekspresi infix: (A+(C+D*F+T*A)*B/C)
Ekspresi postfix: ACDF*+TA*+B*C/+ Ekspresi postfix: ACDF*+TA*+B*C/+
2 Ekspresi infix: (G+((E+D)*C-(F+T)*A)/B+H)
Ekspresi infix: (G+((E+D)*C-(F+T)*A)/B+H)
Ekspresi postfix: GED+C*FT+A*-B/+H+ Ekspresi postfix: GED+C*FT+A*-B/+H+
3 Ekspresi infix: A*(B+(C*(D+E)+F))
Ekspresi infix: A*(B+(C*(D+E)+F))
Ekspresi postfix: ABCDE+*F++* Ekspresi postfix: ABCDE+*F++*
4 Ekspresi infix: (A*(B+(C/D)))
Ekspresi infix: (A*(B+(C/D)))
Ekspresi postfix: ABCD/+* Ekspresi postfix: ABCD/+*
Passed all tests!
https://praktikum.gunadarma.ac.id/mod/quiz/attempt.php?attempt=2841476&cmid=20413&page=1&scrollpos=1179 1/2
12/11/21, 4:43 PM Lab Activity 4. Stack (page 2 of 2)
Benar
Nilai untuk ajuan ini: 50,00/50,00.
https://praktikum.gunadarma.ac.id/mod/quiz/attempt.php?attempt=2841476&cmid=20413&page=1&scrollpos=1179 2/2