Sudah lama tidak meng update blog ku ini. Dari pada isinya itu itu doang maka kali ini aku akan memberikan contoh program bahasa c untuk kalian semua. Sebenarnya ini merupakan tugas yang diberikan dosen struktur data ku, Pak Bayu Setiaji. Dia memberikan tugas untuk mengedit kalkulator postfix yang ia buat agar menjadi kalkulator infix.
Program ini akan menghasilkan tampilan seperti berikut:
Kalkulator Sederhana
Tekan 'q' untuk keluar
: 4
: +
: 4
= 8
Berikut ini programnya:
/*
* program kalkulator.c
*
* versi 1.2
* sudah tidak perlu menambahkan tanda "="
* di akhir perhitungan.
*
* program untuk menghitung penjumlahan,
* pengurangan, perkalian dan
* pembagian.
*
* Nama : Dwi Ariyanto
* NIM : 10.11.4088
* Kelas : S1TI-2H
*
* Copyright [c] 2011 Dwi Ariyanto.
*/
#include
#include
#define MAX 5
int stack[MAX]; // stack
int top; // posisi puncak stack
void push(int i);
int pop(void);
int main(void) {
int a, b, c, d = 0;
char s[80];
top = 0;
system("cls");
printf("Kalkulator Sederhana\n");
printf("Tekan 'q' untuk keluar\n\n");
do {
printf(": ");
gets(s);
switch(*s) {
case '+':
c = '+';
d = top + 1;
break;
case '-':
c = '-';
d = top + 1;
break;
case '*':
c = '*';
d = top + 1;
break;
case '/':
c = '/';
d = top + 1;
break;
case '.':
a = stack[top - 1];
printf("= nilai akhir [ %d ]\n", a);
break;
default:
push(atoi(s));
}
if (top == d) {
d = top - 1;
switch(c) {
case '+':
b = pop();
a = pop();
printf("= %d\n", a + b);
push(a + b);
break;
case '-':
b = pop();
a = pop();
printf("= %d\n", a - b);
push(a - b);
break;
case '*':
b = pop();
a = pop();
printf("= %d\n", a * b);
push(b * a);
break;
case '/':
b = pop();
a = pop();
if(b == 0) {
printf("! pembagian dengan nol\n");
break;
}
printf("= %d\n", a / b);
push(a / b);
break;
case '.':
a = stack[top - 1];
printf("= nilai akhir [ %d ]\n", a);
break;
}
}
} while(*s != 'q');
return 0;
}
void push(int i) {
if(top >= MAX) {
printf("! stack penuh\n");
return;
}
stack[top] = i;
top++;
}
int pop(void) {
top--;
if(top < 0) {
printf("! stack kosong\n");
return 0;
}
return stack[top];
}
Tidak ada komentar:
Posting Komentar