Ticktab

Thursday, November 12, 2009

Konversi Infix ke Postfix dan Prefix (C)

Kali ini saya mencoba membuat program dengan menggunakan bahasa C
Program ini merupakan implementasi dari penggunaan adt stack atau LIFO (Last In First Out)

Program yang saya buat merupakan program untuk mengkonversi penulisan matematika secara infix menjadi postfix atau menjadi prefix
sebagai contoh :
4+6*7/3
maka hasilnya adalah


4673/*+ (postfix)
+4/*673 (prefix)

source code nya dapat sobat copy di
Source Code :

stack.cpp :

/* File : stackt.cpp */
/* Deskripsi : Isi dari header stack.h*/
/* Dibuat oleh : Taufik Rohmat/08501032 */
/* Tanggal : 26-April-2009 */

#include "stack.h"
#include "boolean.h"

void SetTop (Stack *S, address NewTop)
/* Memberi Nilai TOP yang baru dengan NewTop */
{
Top(*S)=NewTop;
}

void SetInfoTop (Stack *S, infotype NewInf)
/* Memberi nilai Top yang baru dengan NewInf */
{
InfoTop(*S)=NewInf;
}

/* PROTO TYPE */
/**** Konstruktor/Kreator ****/
void CreateEmpty (Stack *S)
/* IS : S sembarang */
/* FS : Membuat sebuah stack S yang kosong berkapasitas MaxEl+1 */
/* jadi indeksnya antara 1 .. MaxEl karena 0 tidak dipakai */
/* Ciri stack kosong : TOP bernilai Nil */
{
Top(*S)=Nil;
}

/**** Predikat untuk test keadaan KOLEKSI ****/
boolean IsEmpty (Stack S)
/* Mengirim true jika Stack Kosong */
{
return(Top(S)==Nil);
}

boolean IsFull (Stack S)
/* Mengirim true jika tabel penampung elemen stack sudah penuh */
{
return(Top(S)==MaxEl);
}

/**** Menambahkan sebuah elemen ke Stack ****/
void Push (Stack *S, infotype X)
/* Menambahkan X sebagai elemen stack S */
/* IS : S mungkin kosong, tabel penampung elemen stack TIDAK penuh */
/* FS : X menjadi TOP yang baru, TOP bertambah 1 */
{
SetTop(S, Top(*S)+1);
SetInfoTop(S,X);
}

/**** Menghapus sebuah elemen Stack ****/
void Pop (Stack *S, infotype *X)
/* Menghapus X dari Stack S */
/* IS : S tidak mungkin kosong */
/* FS : X adalah nilai elemen TOP yang lama, TOP berkurang 1 */
{
*X=InfoTop(*S);
SetTop(S, Top(*S)-1 );
}

Stack.h :

/* File : stack.h */
/* Deskripsi : Deklarasi stack yang diimplementasikan dgn tabel kontigu */
/* dan ukuran sama */
/* Top adalah alamat elemen puncak */
/* Dibuat oleh : Taufik Rohmat*/
/* Tanggal : 26-April-2009 */

#ifndef stack_H
#define stack_H
#include "boolean.h"
#define Nil 0
#define MaxEl 100

/* Nil adalah stack dengan elemen kosong. */
/* Indeks dalam bahasa C dimulai dengan 0; tetapi indeks 0 tidak dipakai */

typedef char infotype;
typedef int address; /* indeks tabel */

/* Contoh deklarasi variabel bertype stack dengan ciri TOP : */
/* Versi I : dengan menyimpan tabel dan alamat top secara eksplisit */
/* Tabel dialokasi secara statik */
typedef struct { infotype T[MaxEl+1]; /* tabel penyimpan elemen */
address TOP; /* Alamat TOP : elemen puncak */
} Stack;

/* Definisi stack S kosong : S.TOP = Nil; */
/* Elemen yang dipakai menyimpan nilai Stack adalah T[1] .. T[MaxEl] */
/* Jika S adalah Stack maka akses elemennya : */
/* S.T[S.TOP] untuk mengakses elemen TOP */
/* S.TOP adalah alamat elemen TOP */
/* Definisi Akses : Selektor */
#define Top(S) (S).TOP
#define InfoTop(S) (S).T[(S).TOP]

/**** Perubahan nilai komponen struktur ****/
void SetTop (Stack *S, address NewTop );
/* Memberi Nilai TOP yang baru dengan NewTop */

void SetInfoTop (Stack *S, infotype NewInf);
/* Memberi nilai Top yang baru dengan NewInf */

/* PROTO TYPE */
/**** Konstruktor/Kreator ****/
void CreateEmpty (Stack *S);
/* IS : S sembarang */
/* FS : Membuat sebuah stack S yang kosong berkapasitas MaxEl+1 */
/* jadi indeksnya antara 1 .. MaxEl karena 0 tidak dipakai */
/* Ciri stack kosong : TOP bernilai Nil */

/**** Predikat untuk test keadaan KOLEKSI ****/
boolean IsEmpty (Stack S);
/* Mengirim true jika Stack Kosong */

boolean IsFull (Stack S);
/* Mengirim true jika tabel penampung elemen stack sudah penuh */

/**** Menambahkan sebuah elemen ke Stack ****/
void Push (Stack *S, infotype X);
/* Menambahkan X sebagai elemen stack S */
/* IS : S mungkin kosong, tabel penampung elemen stack TIDAK penuh */
/* FS : X menjadi TOP yang baru, TOP bertambah 1 */

/**** Menghapus sebuah elemen Stack ****/
void Pop (Stack *S, infotype *X);
/* Menghapus X dari Stack S */
/* IS : S tidak mungkin kosong */
/* FS : X adalah nilai elemen TOP yang lama, TOP berkurang 1 */

#endif

Konversi.c :

Cape ngopynya. di download aja ya di Download Konversi.c
Boolean.h :

Sama cape,, download aja ya Download Boolean.H
Program exe nya :

Ni program exe nya, download aja ya,,, Download Program


Maaf jika para master C menganggap nya masih acak-acakan

3 comments:

  1. koq gak ngerti2 yah...wah harus belajar banyak lagi nih...

    ReplyDelete
  2. hehehe...
    emang suka programing juga ya...

    ReplyDelete
  3. yang downloadan itu kok gag bisa didownload yaa ?
    trus tuh bnyag banget yang di pakek buat konversi infix ke prefix itu yang mana yaa ?
    makasih lho ya sebelumnyaaa....

    ReplyDelete