postfix to infix

Post on 30-Jun-2015

186 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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