Sunday, March 25, 2012

Konversi notasi postfix ke prefix pada C programming

Hallo sob... kali ini Nova posting tentang aplikasi stack untuk mengkonversi dari notasi postfix ke notasi prefix pada bahasa pemrograman C.
Sedikit cerita nih tentang bentuknotasi pada postfix,infix dan prefix.
infix    = operand operator operand, misalnya A+B
prefix = operator operand operand. misalnya +AB
postfix=operand operand operator. misalnya AB+

Untuk mengkonversi dari postfix ke prefix, program dalam bahasa C nya ada di bawah ini:

#include<stdio.h>
#include
#include
#define SIZE 30

typedef struct stack
{
char s[SIZE][SIZE], dest[SIZE] ;
char t1[2], t2[2] ;
char ch1[SIZE], ch2[SIZE], ch3[SIZE] ;
int i, top ;
}postfix ;
void inisialisasi ( postfix * ) ;
void expression ( postfix *, char * ) ;
void push ( postfix *, char * ) ;
void pop ( postfix *, char * ) ;
void trans ( postfix * ) ;
void tampil ( postfix ) ;
void main( )
{
postfix PF ;
char exp[SIZE] ;
clrscr( ) ;
inisialisasi( &PF ) ;
printf (“\n\t\t Masukkan notasi postfix:” ) ;
gets ( exp ) ;
expression ( &PF, exp ) ;
trans ( &PF ) ;
printf ( “\n\t\tHasil konversi dari postfix ke prefix: “ ) ;
tampil ( PF ) ;
getch( ) ;
}
void inisialisasi ( postfix *p )
{
p -> i = 0 ;
p -> top = -1 ;
strcpy ( p -> dest, “” ) ;
}
void expression ( postfix *p, char *c )
{
strcpy ( p -> dest, c ) ;
}
void push ( postfix *p, char *str )
{
if ( p -> top == SIZE - 1 )
printf ( “\nStack penuh” ) ;
else
{
p -> top++ ;
strcpy ( p -> s[p -> top], str ) ;
}
}
void pop ( postfix *p, char *a )
{
if ( p -> top == -1 )
printf ( “\nStack kosong.” ) ;
else
{
strcpy ( a, p -> s[p -> top] ) ;
p -> top— ;
}
}
void trans ( postfix *p )
{
while ( p -> dest[p -> i] != ‘\0’ )
{
if ( p -> dest[p -> i] == ‘ ‘)
p -> i++ ;
if( p -> dest[p -> i] == ‘%’ || p -> dest[p -> i] == ‘*’ ||
p -> dest[p -> i] == ‘-’ || p -> dest[p -> i] == ‘+’ ||
p -> dest[p -> i] == ‘/’ || p -> dest[p -> i] == ‘$’ )
{
pop ( p, p -> ch2 ) ;
pop ( p, p -> ch3 ) ;
p -> t1[0] = p -> dest[ p -> i] ;
p -> t1[1] = ‘\0’ ;
strcpy ( p -> ch1, p -> t1 ) ;
strcat ( p -> ch1, p -> ch3 ) ;
strcat ( p -> ch1, p -> ch2 ) ;
push ( p, p -> ch1 ) ;
}
else
{
p -> t1[0] = p -> dest[p -> i] ;
p -> t1[1] = ‘\0’ ;
strcpy ( p -> t2, p -> t1 ) ;
push ( p, p -> t2 ) ;
}
p -> i++ ;
}

}
void tampil ( postfix p )
{
char *t = p.s[0] ;
while ( *t )
{
printf ( “%c “, *t ) ;
t++ ;
}
}
Maka output dari programnya adalah seperti berikut ini:
Selamat mencoba...

No comments:

Post a Comment

Instalasi Burg di Linux Mint Debian Edition

Burg merupakan program yang fungsinya sama dengan Grub. Kedua program ini sama-sama berfungsi untuk mengenali sistem operasi lain yang ter...