Kamis, 15 Desember 2011

Program Tumpukan (Stack) dengan Array Menggunakan C++

Apa itu tumpukan ?
Nah ini dia jawabannya :


Tumpukan (stack) adalah struktur data yang dapat dianalogikan seperti tumpukan kertas yang berlapis-lapis. Proses operasi yang digunakan untuk mengubah data (menambah/add, menghapus/del, dan menyisipkan/insert) melalui ujung yang sama yang disebut dengan ujung atas tumpukan (top of stack).


Ada dua operasi dasar yang dapat kita lakukan pada struktur data tumpukan yaitu:
a.       Operasi menambah data (push) yaitu data akan ditambahkan ke stack, maka data baru akan menempati urutan paling atas dari stack. 
b.      Operasi mengambil data (pop) yaitu data akan diambil dari stack, sehingga bila ada n data dan data pada tumpukan teratas adalah urutan ke-n, maka setelah dilakukan pop maka data pada  urutan  ke- (n-1) yang akan menempati urutan teratas.


Program tumpukan ini dapat diimplementasikan dengan menggunakan array dan senarai berantai ..
Nah ini dia kode program / sintaks program tumpukan dengan menggunakan array pada C++ 




#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define max 7


//deklarasi struct stack
struct STACK
{
   char data[max+1];
   int atas;
};
STACK tumpuk; //deklarasi struct tumpuk


char conv[100],baru,temp;
int pilih,n,i;


// Prototype Fungsi
int intValidation(char chrInp[]);
void push();
void pop();
void intro();
void delay();
void animasi_push();
void animasi_pop();
void pembukaan();


//program utama
void main()
{
    pembukaan();
    intro();
    clrscr();
    cout << "                      ====================================                     \n";
    cout << "                            Program Tumpukan (Stack)                           \n";
    cout << "                      ====================================                     \n\n";
    cout << "-------------------------------------------------------------------------------\n";
    cout << "1. Push Data (Tambah Data)\n";
    cout << "2. Pop Data (Hapus Data)\n";
    cout << "3. Keluar\n";
    cout << "-------------------------------------------------------------------------------\n";
    cout << "                                                                               \n";
    cout << "                                                                               \n";
    cout << "                                                                 X DELETE      \n";
    cout << "                                    =======                                    \n";
    cout << "                                    ||   ||                                    \n";
    cout << "                                    ||   ||                                    \n";
    cout << "                                    ||   ||                                    \n";
    cout << "                                    ||   ||                                    \n";
    cout << "                                    ||   ||                                    \n";
    cout << "                                    ||   ||                                    \n";
    cout << "                                    ||   ||                                    \n";
    cout << "                                    =======                                    \n";
    cout << "                                                                               \n";
    cout << "                                ~Data Tumpukan~                                \n";
    awal :
    gotoxy(1,10);
    cout<<"                                                                            ";
    gotoxy(1,11);
    cout<<"                                                                            ";
    gotoxy(1,10);
    cout << "Pilih : ";
    gets(conv);
    //pemanggilan fungsi validasi
    if(!intValidation(conv)){ cout<<"Input tidak boleh berupa karakter.."; getch(); goto awal; }
    pilih=atoi(conv);
    //seleksi terhadap pilihan
    switch (pilih)
    {
        case 1:
            push();
            goto awal;
        case 2:
            pop();
            goto awal;
        case 3:
            cout << "Terimakasih Telah Mencoba Program Ini";
            intro();
            exit(1);
        default:
            cout << "Id Menu Tidak Ada Pada List";
            getch();
            goto awal;
            break;
    }
}


//fungsi push atau tambah data
void push()
{
   //seleksi apabila jumlah data pada tumpukan penuh
   if(tumpuk.atas==max)
   {
      gotoxy(1,11);
      cout<<"Tumpukan Penuh";
      getch();
   }
   else
   {
      gotoxy(1,11);
      cout<<"Data yang akan di Push (Char) : \n";
      cin>>baru;
      tumpuk.atas++ ;
      //input data pada struck tumpuk
      tumpuk.data[tumpuk.atas]=baru;
      //memanggil fungsi animasi push
      animasi_push();
   }
}


//fungsi pop atau menghapus data teratas pada tumpukan
void pop()
{
   //seleksi bila data di tumpukan masih kosong
   if (tumpuk.atas==NULL)
   {
     gotoxy(1,11);
     cout<<"Tumpukan Kosong";
     getch();
   }
   else
   {
     cout<<"Data yang akan di pop = "<<tumpuk.data[tumpuk.atas];
     temp = tumpuk.data[tumpuk.atas];
     //nilai tumpuk.atas dikurangi untuk menghapus ke-tumpuk.atas
     tumpuk.atas--;
     //memanggil fungsi animasi pop
     animasi_pop();
   }
}


//fungsi validasi
int intValidation(char chrInp[])
{
    int i;
    //loop untuk memeriksa isi data
    for(i=0;i<strlen(chrInp);i++){
        if(!isdigit(chrInp[i]))
        {
            return 0;
            break;
        }
}
return 1;
}


//fungsi animasi push
void animasi_push()
{
  int x=1,y=12;
  for(x;x<=39;x++)
  {
    gotoxy(x,y);
    cout<<tumpuk.data[tumpuk.atas];
    delay(); delay();
    gotoxy(x,y);
    cout<<" ";
    if(x==39)
    {
      gotoxy(x+1,y);
      cout<<tumpuk.data[tumpuk.atas];
      delay();
      gotoxy(37,13);
      cout<<" ========";
      delay();
      gotoxy(37,13);
      cout<<"  ========";
      delay();
      gotoxy(37,13);
      cout<<"   ========";
      delay();
      gotoxy(37,13);
      cout<<"    ========";
      delay();
    }
  }
  for(y;y<=21-tumpuk.atas;y++)
  {
    gotoxy(x,y);
    cout<<tumpuk.data[tumpuk.atas];
    delay(); delay();
    gotoxy(x,y);
    cout<<" ";
    if(y==21-tumpuk.atas)
    {
      gotoxy(x,y);
      cout<<tumpuk.data[tumpuk.atas];
      gotoxy(37,13);
      cout<<"    ========";
      delay();
      gotoxy(37,13);
      cout<<"   ======== ";
      delay();
      gotoxy(37,13);
      cout<<"  ========  ";
      delay();
      gotoxy(37,13);
      cout<<" ========   ";
      delay();
      gotoxy(37,13);
      cout<<"=======     ";
    }
  }
}


//fungsi animasi pop
void animasi_pop()
{
  int x=40,y=20-tumpuk.atas;
  for(y;y>=13;y--)
  {
    gotoxy(x,y);
    cout<<temp;
    delay(); delay();
    gotoxy(x,y);
    cout<<" ";
    if(y==14)
    {
      gotoxy(x,y);
      cout<<temp;
      delay(); delay(); delay();
      gotoxy(37,13);
      cout<<" ========";
      delay();
      gotoxy(37,13);
      cout<<"  ========";
      delay();
      gotoxy(37,13);
      cout<<"   ========";
      delay();
      gotoxy(37,13);
      cout<<"    ========";
      gotoxy(x,y);
      cout<<" ";
      delay();
    }
  }
  for(x;x<=65;x++)
  {
    gotoxy(x,y);
    cout<<temp;
    delay(); delay();
    gotoxy(x,y);
    cout<<" ";
    if(x==65)
    {
      gotoxy(37,13);
      cout<<"    ========";
      delay();
      gotoxy(37,13);
      cout<<"   ======== ";
      delay();
      gotoxy(37,13);
      cout<<"  ========  ";
      delay();
      gotoxy(37,13);
      cout<<" ========   ";
      delay();
      gotoxy(37,13);
      cout<<"=======     ";
    }
  }
}


//fungsi tampilan pada pembukaan program
void pembukaan()
{
  cout<<"===============================================================================\n";
  cout<<"===============================================================================\n";
  cout<<"                                                                               \n";
  cout<<"                                Loading ........                               \n";
  cout<<"                                                                               \n";
  cout<<"                ===============================================                \n";
  cout<<"                |                                             |                \n";
  cout<<"                |       Program Tumpukan (Dengan Array)       |                \n";
  cout<<"                |                                             |                \n";
  cout<<"                ===============================================                \n";
  cout<<"                                                                               \n";
  cout<<"                                                                               \n";
  cout<<"                                      Oleh :                                   \n";
  cout<<"                                                                               \n";
  cout<<"                                   KELOMPOK 15                                 \n";
  cout<<"                                                                               \n";
  cout<<"                1. Rai Gudakesa                     1004505005                 \n";
  cout<<"                2. I Komang Ariana                  1004505015                 \n";
  cout<<"                3. Komang Arya Senatana Budi        1004505027                 \n";
  cout<<"                4. Nym. Agus Tria Surya Kurniawan   1004505028                 \n";
  cout<<"                                                                               \n";
  cout<<"                                                                               \n";
  cout<<"                                                                               \n";
  cout<<"===============================================================================\n";
  cout<<"===============================================================================";
  int x = 17, y=6,c,d,a,e;
  for(a=1;a<2;a++)
  {
   for (x;x<64;x++)
   {
     gotoxy(x,y);
     cout<<"   ";
     delay();
     gotoxy(x,y);
     cout<<"=";
   }
   x = 63, y=7;
   for (y;y<11;y++)
   {
     gotoxy(x,y);
     cout<<" ";
     delay();
     gotoxy(x,y);
     cout<<"|";
   }
   x = 63, y=10;
   for (x;x>16;x--)
   {
     gotoxy(x-2,y);
     cout<<"   ";
     delay();
     gotoxy(x,y);
     cout<<"=";
   }
   x = 17, y=9;
   for (y;y>6;y--)
   {
     gotoxy(x,y);
     cout<<" ";
     delay();
     gotoxy(x,y);
     cout<<"|";
   }
  }
}


//fungsi intro
void intro()
{
  int x,y;
  for(x=1;x<=78;x=x+3)
  {
   for(y=1;y<=25;y++)
   {
    gotoxy(x,y);
    cout<<"===";
    for(int a=1;a<80;a++)
      for(int b=1;b<80;b++)
        cout<<"";
   }
   for(int a=1;a<80;a++)
      for(int b=1;b<800;b++)
        cout<<"";
  }
  delay();
}


//fungsi delay
void delay()
{
  int a,b;
  for(a=1;a<1000;a++)
      for(b=1;b<1000;b++)
        cout<<"";
}



as

nah , kalo mau .cpp nya , kontek aja ya , hehe
yang senarai mau juga ? kontak saya saja , hehe 

Rabu, 14 Desember 2011

Program Senarai Berantai dengan C++

Cuma mau berbagi informasi sedikit saja mengenai senarai berantai ..
Apa itu senarai berantai ? 
Buat kalian yang programmer pasti gak asing lagi deh sama istilah yang satu ini .
cekidot langsung dah :D

Linked list atau senatai berantai adalah kunpulan liniar sejumlah data , atau kumpulan komponen yang disusun secara berurutan pointer. Masing-masing komponen dinamakan dengan simpul (node). Simpul dalam suatu linked list terbagi menjadi dua bagian yaitu medan informasi yang berisi informasi yang akan disimpan dan diolah, dan medan penyambung(link field) yang berisi simpul berikutnya. Ada sejumlah operasi yang bisa kita lakukan pada sebuah linked list yaitu membaca isi link, menambah simpul, menghapus simpul dan mencari informasi pada linked list

Berikut ini adalah sintaks program sederhana yang menggunakan konsep senarai berantai tadi : 
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

typedef struct linkedList{
    char info;
    linkedList *berikut;
}linkedList;

linkedList *awal, *akhir;
char data,conv[20];
int pilih;

/* Prototype Fungsi Validasi Digit Input */
int intValidation(char chrInp[]);
/* ===================================== */
char input_data();
void tambah_depan(char data);
void tambah_tengah(char data);
void tambah_belakang(char data);
void hapus_simpul(char data);
void baca_maju();
void pembukaan();
void intro();

void main()
{
  pembukaan();
  awal:
    intro();
    clrscr();
    cout << "      ====================================      \n";
    cout << "                Senarai Berantai                \n";
    cout << "      ====================================      \n";
    cout << "------------------------------------------------\n";
    cout << "1. Tambah Depan\n";
    cout << "2. Tambah Belakang\n";
    cout << "3. Tambah Tengah\n";
    cout << "4. Tampil Data\n";
    cout << "5. Hapus Simpul\n";
    cout << "6. Keluar\n";
    cout << "------------------------------------------------\n";
    cout << "Pilih : ";
    gets(conv);
    if(!intValidation(conv)){ cout<<"Input tidak boleh berupa
    karakter.."; getch(); goto awal; }
    pilih=atoi(conv);    if(pilih < 1 || pilih > 6){ goto awal; }

    switch (pilih)
    {
        case 1:
            input_data();
            tambah_depan(data);
            baca_maju();
            getch();
            goto awal;
            break;
        case 2:
            input_data();
            tambah_belakang(data);
            baca_maju();
            getch();
            goto awal;
            break;
        case 3:
            input_data();
            tambah_tengah(data);
            baca_maju();
            getch();
            goto awal;
            break;
        case 4:
            baca_maju();
            getch();
            goto awal;
            break;
        case 5:
            baca_maju();
            input_data();
            hapus_simpul(data);
            getch();
            goto awal;
            break;
        case 6:
            cout << "Terimakasih Telah Mencoba Program Senarai Ini...
            ^.^";
            exit(1);
            break;
        default:
            cout << "Id Menu Tidak Ada Pada List";
            getch();
            goto awal;
            break;
    }
}

char input_data()
{
    cout << "\n";
    cout << "Inputkan Data (Char) : ";
    cin >> data;
    return data;
}

void tambah_depan(char data)
{
    linkedList *baru;
    baru = new linkedList;
    baru->info=data;
    baru->berikut=NULL;
    if(awal == NULL)
    {
        awal=baru;
        akhir=baru; /* Fix Crash Ketika Inisiasi Pointer Kosong */
    }else{
        baru->berikut=awal;
    }
    awal=baru;
}

void tambah_belakang(char data)
{
    linkedList *baru;
    baru = new linkedList;
    baru->info=data;
    baru->berikut=NULL;
    if(awal == NULL)
    {
        awal=baru;
    }else{
        akhir->berikut=baru;
    }
    akhir=baru;
}

void tambah_tengah(char data)
{
    linkedList *baru,*bantu;
    int tmp_dat,tmp_awal,tmp_akhir,tmp_bbinfo;
    /* Temporary Variabel Untuk Koversi Ke Integer Data */
    if(awal!=NULL)
    {
       tmp_dat=data, tmp_awal = awal->info, tmp_akhir =
       akhir->info;
    }

    if(awal==NULL || tmp_dat <= tmp_awal)
    {
        tambah_depan(data);
    }
    else if(tmp_dat >= tmp_akhir)
    {
        tambah_belakang(data);
    }
    else
    {
        baru = new linkedList;
        baru->info=data;
        baru->berikut=NULL;
        bantu=awal;
        tmp_bbinfo = bantu->berikut->info;
        while(bantu->berikut!=NULL && tmp_dat > tmp_bbinfo)
        {
            bantu=bantu->berikut;
            tmp_bbinfo = bantu->berikut->info;
        }
        baru->berikut = bantu->berikut;
        bantu->berikut=baru;
    }

}

void baca_maju()
{
    linkedList *bantu;
    bantu=awal;
    cout << "\nData Pada Senarai : ";
    while(bantu!=NULL)
    {
        cout << bantu->info << " ";
        bantu=bantu->berikut;
    }
}

void hapus_simpul(char data)
{
    linkedList *hapus, *bantu;
    if(awal==NULL)
    {
        cout << "Senarai Masih Kosong... Silahkan Input Data Terlebih
        Dahulu";
    }
    else if(awal->info == data)
    {
        hapus = awal;
        awal = hapus->berikut;
        delete hapus;
        cout << endl << "Data Berhasil Dihapus.....\n";
        baca_maju();
    }
    else
    {
        bantu = awal;
        hapus = awal->berikut;
        while((hapus!=NULL) && (data!=hapus->info))
        {
            hapus = hapus->berikut;
            bantu = bantu->berikut;
        }

        if(hapus == NULL)
        {
            cout << "Data Yang Dicari Tidak Ada";
        }
        else if(data == hapus->info)
        {
            bantu->berikut = hapus->berikut;
            delete hapus;
            cout << endl << "Data Berhasil Dihapus.....\n";
            baca_maju();
        }
    }
}

int intValidation(char chrInp[])
{
    int i;
    for(i=0;i<strlen(chrInp);i++){
        if(!isdigit(chrInp[i]))
        {
            return 0;
            break;
        }
           }
           return 1;
}

void pembukaan()
{
  cout<<"====================================================\n";
  cout<<"====================================================\n";
  cout<<"                                                    \n";
  cout<<"                   Loading ........                 \n";
  cout<<"                                                    \n";
  cout<<"   ===============================================  \n";
  cout<<"   |                                             |  \n";
  cout<<"   |    Program Senarai Berantai (Linked List)   |  \n";
  cout<<"   |                                             |  \n";
  cout<<"   ===============================================  \n";
  cout<<"                                                    \n";
  cout<<"                                                    \n";
  cout<<"                        Oleh :                      \n";
  cout<<"                                                    \n";
  cout<<"                     KELOMPOK 15                    \n";
  cout<<"                                                    \n";
  cout<<"   1. Rai Gudakesa                     1004505005   \n";
  cout<<"   2. I Komang Ariana                  1004505015   \n";
  cout<<"   3. Komang Arya Senatana Budi        1004505027   \n";
  cout<<"   4. Nym. Agus Tria Surya Kurniawan   1004505028   \n";
  cout<<"                                                    \n";
  cout<<"                                                    \n";
  cout<<"                                                    \n";
  cout<<"====================================================\n";
  cout<<"====================================================";
  int x = 17, y=6,c,d,a,e;
  for(a=1;a<3;a++)
  {
  for (x;x<64;x++)
  {
     gotoxy(x,y);
     cout<<"   ";
     for(c=1;c<1000;c++)
       for(d=1;d<1000;d++)
          cout<<"";
     gotoxy(x,y);
     cout<<"=";
  }
  x = 63, y=7;
  for (y;y<11;y++)
  {
     gotoxy(x,y);
     cout<<" ";
     for(c=1;c<1000;c++)
       for(d=1;d<1000;d++)
         cout<<"";
     gotoxy(x,y);
     cout<<"|";
  }
  x = 63, y=10;
  for (x;x>16;x--)
  {
     gotoxy(x-2,y);
     cout<<"   ";
     for(c=1;c<1000;c++)
       for(d=1;d<1000;d++)
         cout<<"";
     gotoxy(x,y);
     cout<<"=";
  }
  x = 17, y=9;
  for (y;y>6;y--)
  {
     gotoxy(x,y);
     cout<<" ";
     for(c=1;c<1000;c++)
        for(d=1;d<1000;d++)
           cout<<"";
     gotoxy(x,y);
     cout<<"|";
  }
  }
}

void intro()
{
  int x,y;
  for(x=1;x<=78;x=x+3)
  {
   for(y=1;y<=25;y++)
   {
    gotoxy(x,y);
    cout<<"===";
    for(int a=1;a<80;a++)
      for(int b=1;b<80;b++)
        cout<<"";
   }
   for(int a=1;a<700;a++)
      for(int b=1;b<700;b++)
        cout<<"";
  }
  for(int a=1;a<1800;a++)
      for(int b=1;b<1800;b++)
        cout<<"";
}

Semoga ilmu ini berguna ya :D

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best WordPress Web Hosting