STRUKTUR DATA
Source Code untuk Billing Warnet dengan Struct
#include<iostream>
#include<conio.h>
using namespace std;
struct waktu //struct untuk waktu dengan semua tipe data di dalamnya adalah integer
{
int detik;
int menit;
int jam;
};
struct id // struct untuk id dengan semua tipe di dalamnya adalah string
{
string username;
string password;
};
struct tarif //struct untuk tarif yang memuat struct waktu,struct id dan tipe data ineteger dari variabel tarif
{
waktu main; //struct waktu dg tipe data int
id pelanggan; //struct id dengan tipe data string
int tarif;
};
tarif billing; // struct tarif dengan variabel billing
//create main program
int main () //main program
{
cout<<"Username : "; //menampilkan username
cin>>billing.pelanggan.username; //pemanggilan struct id untuk menginput data pada variabel //username dg tipe data string
cout<<"Password : "; //menampilkan password
cin>>billing.pelanggan.password; //pemanggilan struct id untuk menginput data pada variabel //password dg tipe data string
cout<<"Lama Penggunaan"<<endl; //menampilkan lama penggunaan dan baris baru
cout<<"Jam : "; //menampilkan jam
cin>>billing.main.jam; //pemanggilan struct waktu dengan menginput data/nilai dari variabel jam //dengan tipe data int
cout<<"Menit : "; //menampilkan menit
cin>>billing.main.menit; //pemanggilan struct waktu dg menginput data/nilai dari variabel menit //dg tipe data int
cout<<"Detik : "; //menampilkan detik
cin>>billing.main.detik; //pemanggilan struct waktu dg menginput data/nilai dari variabel detik dg //tipe data int
//tarif billing per detiknya Rp 1,-
billing.tarif=(3600*billing.main.jam)+(60*billing.main.menit)+billing.main.detik;
//3.600 didapat dari konversi jam ke detik,60 didpt dari konversi menit ke detik
cout<<"Total Billing : RP."<<billing.tarif; //menampilkan total billing dengan memanggil struct //tarif
getch(); //untuk menghold tampilan pada saat dicompile
}
Source Code untuk Program Stack
#include <iostream>
#include <conio.h>
#include <cstdlib>
using namespace std;
int stack[11]; //data dalam stack terdapat 11 data
void menu ()
{
cout<<"1.Push\n2. Pop\n3. Clear\n4. Print\n5. Exit\nPilihan Anda : "; //untuk menampilkan menu
}
int push (int j) //input data on the stack
{
if (j<10)
{
if(j==-1) // menandakan datanya belum ada,maka harus diinput dulu
{
j=0; //indikator index
}
cout<<"Masukkan Data (int) = ";
cin>>stack [j] ;//data stack yang diinput dan j sebagai nilai indexing arraynya
cout<<"Data berhasil dipush\n";
j++; //indexing arraynya bertambah 1
}
else
{
cout<<"Stack penuh, harap lakukan pop data dahulu\n"; //tampilan kalimat yang keluar apabila //stack penuh
}
return j; //mengembalikan nilai j
}
int pop (int j) //input data on the stack
{
if(j>=0) //menandakan datanya sudah ada
{
cout<<"Nilai j : "<<j<<endl; //menampilkan nilai j
j--; //nilai j berkurang 1
cout<<"Nilai j : "<<j<<endl;
cout<<"Data "<<stack[j]<<" Dipop\n"; //menampilkan data dari nilai stack dg indexing j
}
else
{
cout<<"Stack kosong,harap lakukan push data dahulu\n"; //tampilan yang akan keluar apabila kondisi sebelumnya tidak terpenuhi
}
return j; //mengembalikan nilai j
}
void print (int j) //untuk menampilkan stack
{
if(j>=0) //menandakan bahwa datanya ada
{
for(int i=j-1;i>=0;i--) //perulangan untuk menampilkan stack yang sudah diinput data atau data //yang sudah dipush
{
cout<<"["<<stack[i]<<"]\n"; //menampilkan stack
}
}
else
{
cout<<"Stack kosong,harap lakukan push terlebih dahulu\n";
}
}
main ()
{
int i=-1,pilih; //deklarasi variabel i dan pilih dengan tipe data integer
start:
system ("cls"); //untuk clear screen
menu (); //memanggil fungsi menu
cin>>pilih; //memasukkan nilai dari pilih sesuai menu yang ditampilkan
if(pilih==1) //jika pilih sama dengan 1
{
i=push(i); //memanggil fungsi push
cout<<"Jumlah isi stack : "<<i<<endl;
getch ();
goto start; //kembali ke start
}
else if (pilih==2) //jika pilih sama dengan 2
{
i=pop(i); //memanggil fungsi pop
cout<<"Nilai i : "<<i<<endl;
getch ();
goto start;
}
else if (pilih==3) //jika pilih sama dengan 3
{
for(int x=0;x<i;x++)
{
stack[x]=NULL;//NULL = kosong
}
i=-1; //mengubah index menjadi -1 berarti kosong/ngga ada array -1
cout<<"Semua data terhapus\n";
cout<<stack[1];
getch();
goto start;
}
else if (pilih==4) //jika pilih sama dengan 4
{
print(i); //memanggil fungsi print
getch();
goto start;
}
else if (pilih==5) //jika pilih sama dengan 5
{
cout<<"\n\nTerima Kasih\n";
}
else
{
cout<<"Input salah\n";
getch();
goto start;
}
return 0;
}
Source Code Stack menggunakan Struct
#include <iostream>
#include <conio.h>
#include <cstdlib>
using namespace std;
#include <conio.h>
#include <cstdlib>
using namespace std;
struct tumpukan{
int stk;
};
int stk;
};
tumpukan stack[11];
void menu ()
{
cout<<"1.Push\n2. Pop\n3. Clear\n4. Print\n5. Exit\nPilihan Anda : "; //untuk menampilkan menu
}
{
cout<<"1.Push\n2. Pop\n3. Clear\n4. Print\n5. Exit\nPilihan Anda : "; //untuk menampilkan menu
}
int push (int j) //input data on the stack
{
if (j<10)
{
if(j==-1)
{
j=0;//indikator index
}
cout<<"Masukkan Data (int) = ";
cin>>stack[j].stk;//data stack yang diinput dan j sebagai nilai indexing arraynya
//cout<<"Sebelum ditambah j++ : "<<j<<endl;
cout<<"Data berhasil dipush\n";
j++;//indexing arraynya bertambah 1
//cout<<"Setelah ditambah j++ : "<<j<<endl;
}
else
{
cout<<"Stack penuh, harap lakukan pop data dahulu\n";
}
return j;
}
{
if (j<10)
{
if(j==-1)
{
j=0;//indikator index
}
cout<<"Masukkan Data (int) = ";
cin>>stack[j].stk;//data stack yang diinput dan j sebagai nilai indexing arraynya
//cout<<"Sebelum ditambah j++ : "<<j<<endl;
cout<<"Data berhasil dipush\n";
j++;//indexing arraynya bertambah 1
//cout<<"Setelah ditambah j++ : "<<j<<endl;
}
else
{
cout<<"Stack penuh, harap lakukan pop data dahulu\n";
}
return j;
}
int pop (int j)
{
if(j>=0)
{
cout<<"Nilai j : "<<j<<endl;
j--;
cout<<"Nilai j : "<<j<<endl;
cout<<"Data "<<stack[j].stk<<" Dipop\n";
}
else
{
cout<<"Stack kosong,harap lakukan push data dahulu\n";
}
return j;
}
{
if(j>=0)
{
cout<<"Nilai j : "<<j<<endl;
j--;
cout<<"Nilai j : "<<j<<endl;
cout<<"Data "<<stack[j].stk<<" Dipop\n";
}
else
{
cout<<"Stack kosong,harap lakukan push data dahulu\n";
}
return j;
}
void print (int j)
{
if(j>=0)
{
for(int i=j-1;i>=0;i--)
{
cout<<"["<<stack[i].stk<<"] \n";
}
//cout<<stack[1];
}
else
{
cout<<"Stack kosong,harap lakukan push terlebih dahulu\n";
}
}
{
if(j>=0)
{
for(int i=j-1;i>=0;i--)
{
cout<<"["<<stack[i].stk<<"]
}
//cout<<stack[1];
}
else
{
cout<<"Stack kosong,harap lakukan push terlebih dahulu\n";
}
}
{
int i=-1,pilih;
start:
system ("cls");
menu ();
cin>>pilih;
if(pilih==1)
{
i=push(i);
cout<<"Jumlah isi stack : "<<i<<endl;
getch ();
goto start;
}
else if (pilih==2)
{
i=pop(i);
cout<<"Nilai i : "<<i<<endl;
getch ();
goto start;
}
else if (pilih==3)
{
for(int x=0;x<i;x++)
{
stack[x].stk=NULL;//NULL = kosong
}
i=-1;//mengubah index menjadi -1 berarti kosong/ngga ada array -1
cout<<"Semua data terhapus\n";
cout<<stack[1].stk;
getch();
goto start;
}
else if (pilih==4)
{
print(i);
getch();
goto start;
}
else if (pilih==5)
{
cout<<"\n\nTerima Kasih\n";
}
else
{
cout<<"Input salah\n";
getch();
goto start;
}
return 0;
}
Source Code Queue
#include<iostream>
#include <cstdlib>
#include<conio.h>
#define max 10 //mengdefine bahawa data max ada 10 data
using namespace std;
struct Queue //struct untuk queue untuk semua tipe data di dalamnya integer
{
int data[max];
int head;
int tail;
};
Queue antrian; //stack queue dengan nama antrian
void create()
{
antrian.head=antrian.tail=-1;//untuk indexing
}
int IsEmpty()
{
if(antrian.tail==-1)
return 1;// kalo data kosong
else
return 0;// ada isinya
}
int IsFull()
{
if(antrian.tail==max-1)//apabila tail sama dengan data max yang ke 9
return 1;
else
return 0;
}
void Enqueue(int data)
{
if(IsEmpty()==1)//ini untuk logic data yang masih awal,belum jadi data ke 0
{
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;
cout<<"Data "<<antrian.data[antrian.tail]<<"Masuk !!!";
}
else if(IsFull()==0)
{
antrian.tail++;
antrian.data[antrian.tail]=data;
cout<<"Data "<<antrian.data[antrian.tail]<<"Masuk !!!";
}
else if(IsFull()==1)
{
cout<<"Ruangan Penuh !!"<<endl;
cout<<data<<"Ga Bisa Masuk !!!";
}
}
void Dequeue()
{
int i;
int e = antrian.data[antrian.head];//untuk menampung nilai dari data pertama
if(antrian.tail==-1)
{
cout<<"Ga Ada antrian... Data Kosong"<<endl;
}
else
{
for(i=antrian.head;i<antrian.tail;i++)
{
antrian.data[i]=antrian.data[i+1];//untuk mengoverwrite nilai dari tail yang sebelumnya
}
antrian.data[antrian.tail]=NULL;//untuk menghilangkan data
antrian.tail--;
cout<<"Data yang keluar lebih dulu = "<<e<<endl;
}
}
void clear()
{
for(int i=antrian.head;i<=antrian.tail;i++)
{
antrian.data[i]=NULL;
}
antrian.head=antrian.tail=-1;
cout<<"Data Clear";
}
void tampil()
{
if(IsEmpty()==0)
{
cout<<"Data Dalam Antrian"<<endl;
cout<<"=====================================";
cout<<endl;
for(int i=antrian.head;i<=antrian.tail;i++)
{
cout<<"| " <<antrian.data[i]<<" |";
}
}
else
{
cout<<"Ga ada antrian... Data kosong";
}
}
int main()
{
int pil;
int data;
create();
do
{
system("cls");
cout<<"Implementasi Antrian dengan Struct"<<endl;
cout<<"==========================================";
cout<<endl;
cout<<"1. Enqueue"<<endl;
cout<<"2. Dqueue "<<endl;
cout<<"3. Print "<<endl;
cout<<"4. Clear "<<endl;
cout<<"5. Exit "<<endl;
cout<<"Masukkan pilihan anda : ";
cin>>pil;
switch(pil)
{
case 1:
{
cout<<endl;
cout<<"Data = ";
cin>>data;
Enqueue(data);
break;
}
case 2:
{
cout<<endl;
Dequeue();
break;
}
case 3:
{
cout<<endl;
tampil();
break;
}
case 4:
{
cout<<endl;
clear();
break;
}
}
getch();
}
while(pil!=5);
}
No comments:
Post a Comment