Oleh: antoniusrc | 6 Oktober 2008

Postfix Calculator Sederhana

#include
#include
#include

#define MAX 20

int data[20];
int top=-1;

int isFull(){
	if(top==MAX-1) return 1; else return 0;
}

int isEmpty(){
	if(top==-1) return 1; else return 0;
}

void push(int d){
	if(isFull()==0){
		top++;
		data[top]=d;
	}
}

int pop(){
	int t=-1;
	if(isEmpty()==0){
		t=data[top];
		top--;
	}
	return t;
}

void operasi(char o){
	int a, b, h;
	switch(o){
		case '+':
					a = pop();
					b = pop();
					h = b + a;
					push(h);
					break;
		case '-':
					a = pop();
					b = pop();
					h = b - a;
					push(h);
					break;
		case '*':
					a = pop();
					b = pop();
					h = b * a;
					push(h);
					break;
		case '/':
					a = pop();
					b = pop();
					h = b / a;
					push(h);
					break;
		case '=':
					a = pop();
					if(a!=-1) printf("%d\n",a);
					else printf("EMPTY\n");
	}
}

int isOp(char* op){
	if(strcmp(op,"+")==0 || strcmp(op,"-")==0 || strcmp(op,"*")==0 || strcmp(op,"/")==0 || strcmp(op,"=")==0)
		return 1;
	else return 0;
}

void main(){
	char d[10];
	while(1){
		scanf("%s",d);
		if(isOp(d)){
			operasi(d[0]);
		} else if(strcmp(d,"x")==0){
			break;
		} else push(atoi(d));
	}
}

Contoh input:
120 <enter>
30 <enter>
+ <enter> -> program langsung menjumlahkan 150
10 <enter>
* <enter> ->program mengkalikan = 1500
= <enter> ->program menampilkan hasil = 1500
= <enter> ->program menampilkan EMPTY krn stack kosong


Responses

  1. Wah, tugas kompiler tu pak.Hehehehe….
    Aku dulu cuman bisa bikin 50% aja.
    Bisa buat tugas anak2 strukdat tu…

    Btw, materi post-in-pre-fix tu ditaruh dimana ya?
    Di modul stack&queue kok ga ada.. Thanks!

  2. materi postfix dan kalkulator diajarin algoritmanya aja di kelas, sebaiknya sich dibuat di praktikum…
    iya itu aku liat dari tugas mhs dari univ lain

    Contoh input:
    120
    30
    + -> program langsung menjumlahkan 150
    10
    * ->program mengkalikan = 1500
    = ->program menampilkan hasil = 1500
    = ->program menampilkan EMPTY krn stack kosong

    DST…


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

%d blogger menyukai ini: