Download - POSTFIX to INFIX
![Page 1: POSTFIX to INFIX](https://reader036.vdokumen.com/reader036/viewer/2022073117/5571f9f6497959916990e345/html5/thumbnails/1.jpg)
FADHILAH KURNIA PUTRI5110100201
POSTFIX to INFIX
![Page 2: POSTFIX to INFIX](https://reader036.vdokumen.com/reader036/viewer/2022073117/5571f9f6497959916990e345/html5/thumbnails/2.jpg)
Soal
Mengubah postfix menjadi infix dengan menggunakan STL list atau membuat sendiri fungsi yang serupa dengan STL stack
![Page 3: POSTFIX to INFIX](https://reader036.vdokumen.com/reader036/viewer/2022073117/5571f9f6497959916990e345/html5/thumbnails/3.jpg)
Penjelasan Soal
Mengubah postfix menjadi infixPostfix
12+34-/Infix
((1+2)/(3-4))
![Page 4: POSTFIX to INFIX](https://reader036.vdokumen.com/reader036/viewer/2022073117/5571f9f6497959916990e345/html5/thumbnails/4.jpg)
Algoritma
Contoh soal: 12+34-/Kita baca string dengan membaca per karakterJika karakter 1-9, maka masukkan dalam stackJika bertemu dengan -,+,* atau /,
maka angka yang di dalam stack keluar.
Menggabungkan dua angka denganoperator diantaranya, di pinggir kanan dan kiri diberi tanda kurung.
Memasukkan kembali gabungan angka ke dalam stack
![Page 5: POSTFIX to INFIX](https://reader036.vdokumen.com/reader036/viewer/2022073117/5571f9f6497959916990e345/html5/thumbnails/5.jpg)
( )( )
2
1(1+2)
3
4
(3-4)
((1+2)/(3-4))
1 2+
12+34-/
( )3 4-/
![Page 6: POSTFIX to INFIX](https://reader036.vdokumen.com/reader036/viewer/2022073117/5571f9f6497959916990e345/html5/thumbnails/6.jpg)
Source Code
#include<stdio.h>#include<list>#include<string>#include<iostream>using namespace std;
int main (){ int n,x; char exp[1000],c1,c2,c3; string temp,temp2; list <string> opn; string s1,s2,s3; string kb; string kt(")"); scanf("%d", &n); for(int i=0;i<=n;i++) { gets(exp); x=strlen(exp); for(int j=0;j<x;j++) { kb="("; if(exp[j]>='0' && exp[j]<='9‘)
if(exp[j]>='0' && exp[j]<='9') { temp.assign(1,exp[j]); //string a(char *temp); opn.push_back(temp); } if(exp[j]== '+' || exp[j]=='-' || exp[j]=='*' ||
exp[j]=='/') { temp2.assign(1,exp[j]);
s3=opn.back();opn.pop_back();s2=opn.back();opn.pop_back();
kb+=s2;kb+=temp2;kb+=s3;kb+=kt; opn.push_back(kb); } } //printf("%s\n", kb); cout<<kb<<endl; } system("pause"); return 0;}