postfix to infix
Post on 30-Jun-2015
186 Views
Preview:
TRANSCRIPT
FADHILAH KURNIA PUTRI5110100201
POSTFIX to INFIX
Soal
Mengubah postfix menjadi infix dengan menggunakan STL list atau membuat sendiri fungsi yang serupa dengan STL stack
Penjelasan Soal
Mengubah postfix menjadi infixPostfix
12+34-/Infix
((1+2)/(3-4))
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
( )( )
2
1(1+2)
3
4
(3-4)
((1+2)/(3-4))
1 2+
12+34-/
( )3 4-/
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;}
top related