Disini saya membuat program penjualan televisi dengan berbagai merk,ukuran, tipe, dan harga.
berikut listing programnya :
HASIL RUNNING:
Tadi adalah hasil runningnya dimana saya menginputkan jumlah pembeli 2, dimana pembelian ke-1 atas nama dijah dan saya menginputkan dia memilih tv 1 merk samsung dengan 32 inch, dan harga satuannya Rp. 2.009.000 dan karena membeli 2 maka total belanjaanya Rp.4.010.000 dengan kode alamat pembayaran 0x48c0dc.
Queue bisa diartikan sebagai antrian, Queue dalam pemrograman menggunakan prinsip FIFO (First In First Out). Mirip seperti halnya kita mengantri di suatu tempat. Orang yang pertama kali mengantri akan dilayani pertama kali. Dalam Pemrograman, antrian/ Queue disini adalah data. Data yang pertama kali diinput ke dalam suatu array akan menjadi yang data pertama kali dioutputkan. Contoh Ilustrasi:
Data A, B, C masuk ke dalam antrian secara berurutan. Kemudian Data yang masuk ke dalam antrian pertama kalian akan menjadi data yang pertama keluar. Dalam queue terdapat beberapa operasi , yaitu :
Deklarasi dan Inisialisasi Queue: membuat array 1 dimensi dan membuat tanda bahwa queue dalam keadaan kosong
InsertQueue: Menambahkan/Mengisi/Menginput data di queue
DeleteQueue: Mengambil/Mengeluarkan data dari queue
Reset : untuk menset ulang agar Front dan Rear menjadi seperti semula dengan begitu Queue akan menjadi kosong.
Berbeda dengan stack, queue mempunyai 2 kata kunci, yaitu Front dan Rear. Front adalah penanda urutan paling depan, sedangkan Rear adalah penanda urutan paling belakang.
Kondisi yang ada dalam Queue:
Penjelasan lebih lengkap tentang Operasi yang ada dalam Queue:
Deklarasi dan Inisialisasi:
Variabel yang akan digunakan adalah Q (array 1 Dimensi sebagai tempat queue), front, rear. Nilai dari front=0 dan rear=-1 yang menandakan queue kosong. Sebagai contoh kita akan membuat queue dengan data maksimal sebanyak 5 data.
Deklarasi dan Inisialisasi Queue
Ilustrasi:
Ilustrasi Inisialisasi Queue
Front menandakan tanda depan dari antrian, Rear mengartikan tanda belakan antrian. Dalam ilustrasi ini menandakan Queue sedang kosong.
InsertQueue
Untuk menambah data ke dalam Queue yang bergerak adalah Rear nya. Algoritmanya bisa dibuat seperti ini:
Ilustrasi:
InsertQueue bisa dilakukan jika memenuhi kondisi Bisa Diisi (R<n-1). Jika memenuhi kondisi Rear nya akan bertambah kemudian menempati posisi disebelah kanan, kemudian data yang ingin diinput yang berada di variabel x dicopykan ke Rear yang telah berpindah tadi.
DeleteQueue
Untuk menghapus atau mengeluarkan data yang berada di dalam Queue yang bergerak adalah Front nya. Algoritmanya bisa dibuat seperti berikut:
Ilustrasi:
Data yang berada di indeks ke 0, akan dipindah ke variabel x, kemudian tanda Front nya akan pindah ke sebelah kanan, dimana indeks ke 1 sekarang akan menjadi Front.
Reset untuk set ulang queue agar Front dan Rear menjadi seperti semula dengan begitu Queue akan menjadi kosong. ini dibutuhkan saat Front dan Rear diujung/bagian terluar array. Algoritma nya:
Ilustrasi:
Pada Ilustrasi di atas perlu dilakukan reset, yaitu mengembalikan posisi Front dan Rear seperti saat awal inisialisasi.
Contoh Studi Kasus: Membuat data mahasiswa dengan struct yang berisi NIM, Nama, dan IPK. Menggunakan Queue. Menginputkan data mahasiswa satu per satu dan mengoutput / menghapus data mahasiswa satu per satu dari dalam Queue.
Single dapat di presentasikan menggunakan array satu dimensi. Kondisi stack di tentukan oleh posisi atau isi top.
Proses pada single satck yaitu :
·Awal (inisialisasi)
·PUSH (Insert,Masuk,Simpan,Tulis)
·POP(Delete,Keluar,Ambil,Baca/Hapus)
2. Double stack
Double stack disebut juga stack ganda prinsip proses dari double stack yaitu LIFO baik dalam single stack maupun untuk double stack.
Proses pada Double Stack :
·AWAL (Inisialisasi)
·PUSH 1 (Push untuk stack 1)
·POP 1 (pop untukstack 1)
·PUSH 2 (Push untuk stack 2)
·POP 2(Pop untuk stack 2)
Kondisi Double stack
Operasi Pada Stack
Operasi utama pada stack yaitu push untuk menambahkan data ke dalam stack dan pop untuk mengeluarkan atau menghapus data dari stack.
1. Menambahkan Data Ke stack
Proses penambahan data ke dalam stack disebut operasi Push.
Langkah - langkah operasi push diantaranya.
Memeriksa apakah tumpukan(stack) penuh
Jika tumpukan penuh, maka sudah tidak ada ruang untuk memasukkan data ke tumpukan, jadi cukup tampilkan pesan bahwa tumpukan sudah penuh.
Jika masih ada ruang, tambahkan satu nilai pada atas(top) tumpukan untuk menunjukkan ke ruang kosong selanjutnya
Menambahkan data dimana ruang kosong yang telah ditunjuk oleh top.
2. Menghapus Data dari stack
Mengambil data bersamaan dengan menghapus data dari stack disebut dengan operasi pop.
Elemen pada stack tidak benar - benar terhapus hanya saja penunjuk ruang(top) di kurangi nilainya dengan satu. Tapi pada implementasi stack sendiri pop akan benar-benar menghapus data tersebut dari tumpukan.
Langkah - langkah operasi pop diantaranya.
Memeriksa apakah tumpukan kosong.
Jika tumpukan kosong, maka sudah tidak ada lagi data untuk dihapus, maka cukup tampilkan pesan bahwa tumpukan kosong.
Jika masih ada data pada tumpukan, maka akses data yang paling atas (top)
kemudian mengurangi nilai penunjuk top.
Program Stack
Untuk mengimplementasikan program stack di C++ kita membutuhkan tiga method atau fungsi push(); untuk menambahkan data ke tumpukan, pop(); untuk me ngeluarkan data dari tumpukan dan printStack() untuk menampilkan data yang ada di tumpukan.
Selain tiga fungsi tersebut, kita akan membuat dua fungsi opsional untuk mengecek apakah tumpukan kosong isEmpty() dan tumpukan penuh isFull().
Untuk menyimpan data kita bisa menggunakan empty array dengan maksimum array yang nanti akan kita definisikan sebagai maksimum tumpukan.
Agar data tumpukannya terstruktur kita bisa menggunakan struct sehingga lebih mudah mengakses data top dan array datanya sendiri seperti sebuah object.
Karena ini adalah program konsole maka tentu kita juga akan membuat fungsi main().
Kode Program Stack
1. Preprocessor dan Headerfile
#include<iostream>#define MAX 10usingnamespace std;
Disini kita hanya menggunakan dua baris preprocessor untuk mendefinisikan header file iostream untuk standard input/output stream dan MAX untuk maksimum data array pada stack/tumpukan.
2. Struct data
//Deklarasi struct tumpukan
struct Stack {
int top, data[MAX];
}Tumpukan;
Pada struct kita mendeklarasikan top untuk menunjukkan data teratas pada tumpukan dan array data[] dengan jumlah array dari data maksimum yang telah di definisikan sebelumnya yaitu MAX.
3. Inisialisasi Nilai top
voidinit(){
Tumpukan.top =-1;}
Untuk memastikan penunjuk (top) berada pada posisi indeks ke 0 pada saat menambahkan data ke tumpukan maka disini kita perlu memberikan nilai awal yaitu -1.
Kedua fungsi ini akan digunakan untuk memeriksa apakah tumpukan penuh isFull() (fungsi pertama) dan tumpukan kosong isEmpty(), keduanya mengembalikan nilai boolean, jadi kita cukup mengembalikan nilai perbandingan pada fungsi masing - masing.
Pada fungsi isEmpty() akan mengembalikan nilai true jika nilai Tumpukan.topsama dengan -1, atau false jika tidak sama.
Pada fungsi isFull() akan mengembalikan nilai true jika nilai Tumpukan.topsama dengan maksimum data array yang telah ditentukan dikurang satu MAX-1, atau false jika tidak sama.
5. Menambahkan Data ke Tumpukan
voidpush(){if(isFull()){
cout <<"\nTumpukan penuh"<<endl;}else{
Tumpukan.top++;
cout <<"\nMasukkan data = "; cin >> Tumpukan.data[Tumpukan.top];
cout <<"Data "<< Tumpukan.data[Tumpukan.top]<<" masuk ke stack"<<endl;}}
Untuk menginputkan data ke tumpukan hal utama yang perlu kita lakukan adalah memeriksa apakah tumpukan penuh atau tidak, jika penuh, maka kita tidak dapat menambahkan data ke tumpukan karena sudah tidak ada ruang lagi yang tersedia. Jadi cukup tampilkan pesan bahwa Tumpukannya penuh.
Jika masih ada ruang maka tambahkan nilai Tumpukan.top dengan 1. Kemudian masukkan data ke ruang yang ditunjukkan oleh top.
Sebelum mengambil data, kita perlu memeriksa apakah tumpukan kosong atau tidak, karena kita tidak dapat mengambil data yang tidak ada pada tumpukan.
Jika tumpukan kosong maka cukup tampilkan pesan bahwa tidak ada data di tumpukan tersebut.
Jika masih ada data pad tumpukan maka Tampilkan data dengan mengambil data teratas dari tumpukkan dan menghapus data tersebut dengan mengurangi nilai top.
7. Menampilkan data pada tumpukan
voidprintStack(){if(isEmpty()){
cout <<"Tumpukan kosong";}else{
cout <<"\nTumpukan : ";for(int i = Tumpukan.top; i >=0; i--)
cout << Tumpukan.data[i]<<((i ==0)?"":",");}}
Sama halnya pada saat mengambil data dari tumpukan, kita juga perlu memeriksa apakah tumpukan tersebut kosong atau tidak.
Jika tidak ada data di tumpukan maka tampilkan pesan bahwa Tumpukan kosong dan data tidak dapat di tampilkan.
Jika masih ada data maka tampilkan data satu -persatu dari tumpukan dengan menggunakan perulangan.
Setelah semua data, variabel dan fungsi selesai kita deklarasikan dan di inisialisasikan, selanjutnya kita bisa membuat menu dengan do ... while dengan switch di dalamnya.
Sebelum menampilkan menu disini kita menampilkan data yang ada di stack menggunakan printStack(), sehingga user dapat melihat data pada tumpukan.
Selanjunya menampilkan pilihan menu, jika user memilih pilihan pertama maka jalankan fungsi push() dan pilihan kedua akan menjalankan fungsi pop(). Selama pilihan user tidak sama dengan 3 yaitu pilihan ketiga maka fungsi printStack()dan menu akan terus ditampilkan. Jika user memilih pilihan ketiga, maka while akan berhenti menampilkan menu dan aplikasi akan ditutup.