Program Gabungan
Program Gabungan

Script Program Gabungan

#include
#include
#include
#define max 20

using namespace std;

typedef struct queue
{
int head;
int tail;
char data [20][20];
}antrian;
queue antri;
struct stack
{
int top;
char tmp[20][max];
}stack;
void inisialisasi()
{
antri.head=antri.tail=-1;
}
int isFull()
{
if(antri.tail==max-1)
return 1;
else
return 0;
}
int isEmpty()
{
if(antri.tail==-1)
{
antri.head=-1;
return 1;
}
else
return 0;
}
void enqueue(char d[20])
{
system("cls");
antri.head=0;
antri.tail++;
strcpy(antri.data[antri.tail],d);
}
void dequeue()
{
system("cls");
cout<<"Data terambil"<<" "< for(int i=antri.head;i<=antri.tail;i++)
strcpy(antri.data[i],antri.data[i+1]);
antri.tail--;
}
void cari(string d)
{
system("cls");
for(int i=antri.head;i<=antri.tail;i++)
{
if(antri.data[i]==d)
{
cout<<"Data "< }
}
}

void clear()
{
system("cls");
antri.head=antri.tail=-1;
cout<<"Semua data terhapus";
}
int kosong()
{
if(stack.top==-1)
return 1;
else
return 0;
}
int penuh()
{
if(stack.top==max-1)
return 1;
else
return 0;
}
void push (char data[max])
{
if(!penuh())
{
stack.top=stack.top+1;
strcpy(stack.tmp[stack.top],data);
}
else
cout<<"Tumpukan dalam stack penuh";

}
void pop()
{
if (!kosong())
{
stack.top--;
cout<<"data pada tumpukan ke-"< }
else
cout<<"Data dalam stcak kosong";
}
void awal()
{
stack.top=-1;
}
int main()
{

int pil;
lagi:
system("cls");
cout<<"=================================="< cout<<"| MENU UTAMA |"< cout<<"=================================="< cout<<"\t1. TUMPUKAN"< cout<<"\t2. ANTRIAN"< cout<<"\t3. Exit"< cout<<"=================================="< cout<<"Masukan pilihan : ";
cin>>pil;
switch(pil)
{
case 1:
int pilih;
char data[max];
awal();

do
{
system("cls");
cout<<"=================================="< cout<<"| PROGRAM TUMPUKAN |"< cout<<"=================================="< cout<<"\t1. PUSH\n";
cout<<"\t2. POP\n";
cout<<"\t3. Menu\n";
cout<<"=================================="< if(!isEmpty())
{
for(int i=stack.top;i>=0;i--)
{
cout<<"["< }
}
else
{
cout<<"[stack dalam kondisi kosong]";
}
cout<<"\nMasukan pilihan : ";
cin>>pilih;
switch(pilih)
{
case 1:
cout<<"Masukan data kolom stack : ";
cin>>data;
push(data);
break;

case 2:
pop();
break;

case 3:
goto lagi;
break;

default:
cout<<"Error!";
break;
}
}
while(pilih!=3);
break;
case 2:
int pil;
inisialisasi();
char dt[20];
string d;
do
{
system("cls");
cout<<"=================================="< cout<<"| PROGRAM ANTRIAN |"< cout<<"=================================="< cout<<"\t1. Masukan antrian"< cout<<"\t2. Layani antrian"< cout<<"\t3. Cari antrian"< cout<<"\t4. Bersihkan antrian"< cout<<"\t5. Menu"< cout<<"=================================="< cout<<" Antrian"< cout<<"Exit | ";
for(int i=0;i<=antri.tail;i++)
cout<<"["< cout<<"|";
cout<<"\nPilihan : ";
cin>>pil;
switch(pil)
{
case 1:
if(!isFull())
{
cout<<"Data = ";
cin>>dt;
enqueue(dt);
}
else
cout<<"\nSudah penuh!"< break;
case 2:
if(!isEmpty())
dequeue();
else
cout<<"\nMasih kosong!"< break;
case 3:
cout<<"Masukan data yang ingin dicari : ";
cin>>d;
cari(d);
break;
case 4:
clear();
cout<<"\nSudah kosong!"< break;
case 5:
goto lagi;
break;
default :
system("cls");
cout<<"Error!";
break;
}
}
while(pil !=5);
break;
}
while(pil !=3);
}

Erwin Widianto a Contoh Script Program Gabungan Struktur Data
Keluaran Program

Penjelasan Program:

Pengertian Queue

Kaidah utama dalam konsep queue adalah FIFO yang merupakan singkatan dari First In First Out, artinya adalah data yang pertama kali dimasukkan atau disimpan, maka data tersebut adalah yang pertama kali akan diakses atau dikeluarkan. Analoginya sama dengan antrian di sebuah loket pembelian tiket kereta, orang yang datang lebih dahulu, maka akan dilayani terlbih dahulu, dan akan selesai lebih dulu dari orang-orang yang datang setelahnya.

Pengertian Stack

Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO (Last In First Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Pada ganbar di bawah ini bisa kita lihat jika kita ingin mengambil suatu data dari tumpukan maka kita harus mengambil data paling atas dahulu kemudian selanjutnya  data yang berada di bawahnya dan seterusnya sampai data yang paling bawah yang pertama kali dimasukan.

  1. Pada awalnya dibuat berbagai file header yang merupakan pernyataan pendeklarasian utama dari sebuah program c++ yang berfungsi untuk memanggil dan menjalankan fungsi-fungsi yang terdapat dalam library file header C++ agar kita bisa menggunakan fungsi-fungsi pada file tersebut.
  • #include <iostream> merupakan standar library deklarasi standar pada c++ untuk fungsi “cout, cin, endl”.
  • #include <stdlib.h> library diatas biasanya berfngsi untuk operasi matematika untuk fungsi “sqrt, max, min, sin, cos, tan”
  • #include <string.h> library diatas digunakan untuk operasi string. Disini untuk fungsi “strcpy” karena dipakai dalam program.
  • #define max 20 define berfungsi untuk memudahkan pengguna dalam deklarasi data. Deklarasi define bersifat general atau bisa diakses oleh setiap fungsi dalam satu file program. Misal, “#define max 100” kita tinggal menulis max dalam penggunaannya.
  1. Selanjutnya kita masukkan kode “using namespace std;” untuk mempersingkat penggunaan fungsi “cout” agar tidak harus menambahkan penulisan “std::” dibelakang cout.
  2. Proses pendeklarasi antrian adalah proses pembuatan struktur antrian dalam memori. Struktur antrian terdiri dari data dalam array, head untuk menunjukkan depan antrian dan tail untuk menunjukkan akhir antrian.

typedef  struct queue {

int head;

int tail;

int data [20];

} antrian; queue antri;

  1. Proses pendeklasian sebuat struktur tumpukan yang berguna untuk menyimpan nilai atas dan data tumpukan.

struct stack

{

   int top;

   char tmp[20][max];

}stack;

  1. Selanjutnya buat inisialiasai antrian. Inisialisasi antrian adalah proses pembuatan suatu antrian kosong. Proses inisialisasi untuk antrian yang menggunakan array adalah dengan mengisi nilai field head dan tail dengan 0 (nol) jika elemen pertama diawali dengan nomor 1. Kalau elemen pertama array dimulai dengan 0 maka head dan tail diisi dengan nilai -1.

void inisialisasi() {

antri.head = antri.tail = -1;

}

  1. Operasi cek kosong. Operasi ini digunakan untuk memeriksa apakah antrian dalam keadaan kosong. Operasi ini penting dilakukan dalam proses Dequeu. Ketika suatu antrian dalam keadaan kosong, maka proses Dequeue tidak bisa dilakukan. Operasi ini dilakukan dengan memeriksa tail. Jika tail bernilai -1, maka berarti antrian dalam keadaan empty (kosong).

int isEmpty() {

if (antri.tail==-1) {

antri.head=-1;

return 1;

} else

return 0;

}

      Dan pada kode di bawah ini merupakan operasi cek kosong dari tumpukan

int kosong()

{

   if(stack.top==-1)

   return 1;

   else

   return 0;

}

  1. Operasi cek penuh. Operasi ini berguna untuk memeriksa keadaan antrian apakah sudah penuh atau belum. Operasi ini akan memberikan nilai true (1) jika field tail sama dengan size-1.

int isFull() {

if (antri.tail==max-1)

return 1;

else return 0;

}

      Dan pada kode di bawah ini merupakan operasi cek penuh dari tumpukan.

int penuh()

{

   if(stack.top==max-1)

   return 1;

   else

   return 0;

}

  1. Operasi Enqueue. Operasi ini berguna untuk menambah suatu elemen data baru pada antrian dan disimpan pada posisi head dan tail yang akan mengakibatkan posisi tail akan berubah. Langkah operasi ini adalah :
  2. Periksa apakah kosong. Jika kosong maka ubah posisi head dan tail pada posisi 0, kemudian    masukkan datanya.
  3. Jika antrian tidak kosong maka naikkan posisi tail sebesar 1, kemudian masukkan datanya.

void enqueue(int dt) {

   antri.head=0;

   antri.tail++;

   antri.data[antri.tail]=dt;

}

  1. Operasi Dequeue. Operasi ini berguna untuk mengambil elemen pertama (head) dari antrian. Penghapusan dilakukan dengan cara mengurangi counter Tail dan menggeser semua elemen antrian kedepan. Penggeseran dilakukan dengan menggunakan looping

void dequeue() {

cout<<“data terambil”<<” “<<antri.data[antri.head]<<endl;

for (int i=antri.head; i<=antri.tail; i++)

antri.data[i]=antri.data[i+1];

antri.tail–;

}

  1. Operasi Clear. Digunakan untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1. Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya

void clear() {

   antri.head=antri.tail=-1;

   cout<<“semua data terhapus.\n”;

}

  1. Operasi Push, operasi ini merupakan bagian dari operasi tumpukan yang berfungsi untuk menambahkan data ke dalam tumpukan yang sudah dibuat.

void push (char data[max])

{

     if(!penuh())

     {

                 stack.top=stack.top+1;

                 strcpy(stack.tmp[stack.top],data);

     }

     else

     cout<<“Tumpukan dalam stack penuh”;

}

  1. Operasi Pop, merupakan operasi untuk mengurangi/mengambil data dari tumpukan yang paling atas terlebih dahulu.

void pop()

{

    if (!kosong())

    {

          stack.top–;

          cout<<“data pada tumpukan ke-“<<stack.top+2<<“sudah di ambil”;

    }

    else

    cout<<“Data dalam stcak kosong”;

}

  1. Selanjutnya kita buat switch/pilihan yang nantinya pengguna dapat memilih antara tumpukan, antrian atau keluar. Kode program switch/pilihan:

switch(pil)

      {

            case 1:

                  (Menuju ke Program Tumpukan)

            case 2:

                  (Menuju ke Program Antrian)

            case 3:

                  (Keluar dari Program)

      }

Didalam sebuah switch disini kita mempunyai 3 sebuah pilihan, yaitu jika kita memilih 1 maka akan pergi ke menu tumpukan, jika kita memilih 2 maka akan menuju ke menu antrian, jika kita memilih 3 maka program akan keluar/selesai.

Pencarian Terbanyak:

  • contoh coding c kombinasi if dengan tumpukan

TINGGALKAN KOMENTAR

Please enter your comment!
Please enter your name here