Program Big Calculator dengan Bahasa C

on Sabtu, 19 Mei 2012


ScreenShot BigCalc 1
Hmm… Tak terasa Ujian Semester akan segera datang, namun demikian juga ingin rasanya mengucap Alhamdulillah, akhirnya beres juga menjalani modul 10 dalam praktikum Struktur Data yang buat gua cukup berat di semester ini, but the journey is not over, tugas berikutnya adalah Tugas Besar.Kali ini saya bersama kelompok memilih tema Stack dengan judul Big Calculator yang diimplementasikan dalam Bahasa C. Awalnya kami kira program Big Calculator dalam Bahasa C ini gampang, setelah dicoba dengan beberapa kali responsi , saya bisa simpulkan dalam membuat program ini gampang-gampang susah. As we know , prinsip stack yang Last In First Out (Terakhir Masuk Pertama Dieksekusi) membuat stack hanya bisa melakukan operasi terbatas pada bagian atasnya, yaitu PUSH (Memasukkan satu elemen ke tumpukan atas) dan POP (Mengambil satu elemen paling atas). Dalam implementasi Program Big Calculator dengan Bahasa C menggunakan dua buah stack, yaitu stack string yang menerima inputan berupa perhitungan, dan stack float yang berfungsi mengkalkulasi hasilnya.
Program Big Calculator dengan Bahasa C, Idenya adalah menggunakan stack string yang merubah notasi infix 2*3 ke postfix 23*, kenapa sih harus dirubah ke postfix, idealnya komputer akan lebih mudah membaca notasi postfix karena urutan proses yang dilakukan sudah pasti (diputuskan terlebih dahulu menggunakan prioritas), lain halnya dengan kita manusia, bisa membedakan 1+2*3 = 7 dan (1+2)*3=9,untuk komputer yang dikatakan “stupid thing” pasti kebingungan.Punch



Langsung aja tanpa banyak basa-basi, kira-kira seperti inilah screenshot Program Big Calculator dengan Bahasa C (Konsep ADT <Abstract Data Type> diimplementasikan)
ScreenShot BigCalc 2
ScreenShot BigCalc 3
ScreenShot BigCalc 4
Primitif :
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
#define nil NULL
#define info(P) (P)->info
#define next(P) (P)->next
#define top(S)  ((S).top)
// STACK CHAR
typedef char infotypechar;
typedef struct telmc *adrchar;
typedef struct telmc{
    infotypechar info;
    adrchar next;
}elmstackc;
typedef struct{
    adrchar top;
}stackChar;
int isEmptyC(stackChar S);
void createStackC(stackChar *S);
adrchar alokasiC(infotypechar X);
void dealokasiC(adrchar P);
void pushchar(stackChar *S, infotypechar X);
void popchar(stackChar *S, infotypechar *X);

//STACK FLOAT
typedef float infotypefloat;
typedef struct telmf *adrfloat;
typedef struct telmf{
    infotypefloat info;
    adrfloat next;
}elmstackfloat;
typedef struct{
    adrfloat top;
}stackFloat;
int isEmptyF(stackFloat S);
void createStackF(stackFloat *S);
adrfloat alokasiF(infotypefloat X);
void dealokasiF(adrfloat P);
void pushfloat(stackFloat *S, infotypefloat X);
void popfloat(stackFloat *S, infotypefloat *X);
float calculatePostfix(char *postfix);
char *konversi(char *infix);
int prior(char x);
int prioritas(char a, char b);

#endif // HEADER_H_INCLUDED
Implementasi
----------------------------------------- Try by Yourself-------------------------------------------------------------
Untuk menghindari hal-hal yang tidak diinginkan, seperti plagiatisme maka saya tidak post disini. Silahkan email ke bambangworld@gmail.com bila anda ingin sourcecode lengkapnya beserta alasan menginginkan sourcecodenya. Terimakasih…
----------------------------------------- Try by Yourself-------------------------------------------------------------
Main
#include "header.h"
#include <stdio.h>
#include <stdlib.h>
#include<stdio.h>
#include<time.h>
void delay(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
}
int main(){
    char input[100],*postfix;
    int pil;
    float hasil=0;
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
    printf("\t\t\t\t BBBB  III  GGG  \n");
    printf("\t\t\t\t B   B  I  G     \n");
    printf("\t\t\t\t BBBB   I  G  GG \n");
    printf("\t\t\t\t B   B  I  G   G \n");
    printf("\t\t\t\t BBBB  III  GGG  \n");
printf("\n");
printf("\t\t  CCC  AA  L     CCC U   U L     AA  TTTTTT  OOO  RRRR    \n");
printf("\t\t C    A  A L    C    U   U L    A  A   TT   O   O R   R   \n");
printf("\t\t C    AAAA L    C    U   U L    AAAA   TT   O   O RRRR    \n");
printf("\t\t C    A  A L    C    U   U L    A  A   TT   O   O R R     \n");
printf("\t\t  CCC A  A LLLL  CCC  UUU  LLLL A  A   TT    OOO  R  RR   \n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("Loading \n");
int i;
for(i=0;i<80;i++)
{
delay(100);
printf("*");
}
printf("Press any key to continue......");
getch();
system("cls");
printf("Tanggal : %s",__DATE__);
      printf("\nJam : %s",__TIME__);
      printf("\n");
      printf("\n");
      printf("\n");
      printf("\n");
      printf("\n");
      printf("\n");
      printf("\n");
      printf("================================================================================");
      printf("                  |      Big Calculator menggunakan Stack   |\n");
      printf("                  |            Created by Kelompok 4        |\n");
      printf("                  |                Anggota :                |\n");
      printf("                  |  - Moch. Bambang Sulistio ( 613110025 ) |\n");
      printf("                  |  - Nanda Hasanal Rizky    ( 613110005 ) |\n");
      printf("                  |  - Syara Zhuhriyami       ( 613110029 ) |\n");
      printf("================================================================================");
      printf("Press any key to continue........");
      getch();
      system("cls");
      printf("Tanggal : %s",__DATE__);
      printf("\nJam : %s",__TIME__);
      printf("\n");
      printf("================================================================================");
      printf("                            Program Big Calculator   \n");
      printf("================================================================================");
    do{
        printf ("Selamat Datang di program BIG CALCULATOR \n");
        printf ("Gunakan Operator +,-,*,/,(,) \n");
        printf ("\n");
        printf ("\n");
        printf("Masukkan Perhitungan : ");
        scanf("%s",input);
        postfix=konversi(input);
        printf("notasi postfix : %s \n",postfix);
        hasil=calculatePostfix(postfix);
        printf("hasil perhitungan : %.1f\n",hasil);
        printf("\n Coba Lagi ??? \n");
        printf("[1] Ya \n");
        printf("[0] Tidak \n");
        printf ("pilihan : ");
        scanf ("%d",&pil);
    }while(pil!=0);
    return 0;
}
}

Download Program

Kelebihan :
  • Mampu melakukan berbagai operasi hitungan berupa perkalian, pembagian, penjumlahan, dan pengurangan
  • Interface yang simpel
  • Ukuran program kecil
Kekurangan (its impossible to eliminate bugs) :
  • Pengkalkulasian terbatas pada maksimal angka 10 Milyar (10 angka dibelakang koma)
  • Wajib didevelop kembali karena hasil pembacaan berupa float belum dikembalikan ke bentuk string, itulah yang membuat hasilnya masih terbatas…
Sekian, semoga bermanfaat.. Laughing out loud
Thanks in advance , my team :
Syara Zhuhriyami, Nanda Hasanal Rizky, and Kang Kresna (Instructor)

Ranking: 5

{ 0 comments... read them below or add one }

Posting Komentar

 
 
© bambang sulistio | situs pribadi Moch. Bambang Sulistio | All Rights Reserved
www.bambangsulistio.web.id is continuation of bambangworld.blogspot.com