Senin, 22 Mei 2017

program QUEUE bahasa c++ [ Modul 9 Struktur Data ]

            Assalamu’alaikum Wr, Wb, oke pada kesempatan kali ini saya akan membahas sebuah program yang bernama QUEUE, QUEUE ini merupakan sebuah program antrian dan QUEUE ini bersifat FIFO yaitu ( First In First Out ) , contohnya seperti antian saat membeli tiket kereta dimana jika terdapat Orang A yang mengantri pertama maka dia pun yang akan keluar pertama.
            Oke Disini saya mempunyai beberapa contoh program stack, langsung saja tanpa berlama – lama kita masuk kecontoh pertama
Script Praktikum 9.1
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main()
{
int cek=0, data[8], x, hapus;
char pil;
do
{
clrscr();
cout<<" Ujian Praktikum Struktur Data Queue "<<endl;
cout<<" Zhein Arifin "<<endl;
cout<<" Universitas Kuningan "<<endl;
cout<<endl;
printf("d. Masukan Data Antrian \n");
printf("e. Hapus Data Antrin \n");
printf("n. Lihat Data Antrian \n");
printf("y. Exit Program \n");
cout<<endl;
printf(" Ketikan Huruf Dari Salah Satu Pilihan Diatas ");
pil=getche();
cout<<endl;
if (pil!='d' && pil !='e' && pil !='n' && pil!='y')
printf("\n\n salah ketik, ulangi lagi .. \n");
else
{
if(pil=='d')
{
if(cek==8)
{
printf("\n Antrian Penuh\n");
getch();
}
else
{
printf("\n MASUKKAN ANGKA->"); scanf("%i",&x);
data[cek]=x;
cek++ ;
}}
else {
if(pil=='e')
{
if(cek==0)
printf("\nMaaf Tidak Antrian Untuk Dihapus \n\n");
else
{
hapus=data[0];
for(int v=0; v<cek; v++)
data[v]=data[v+1];
data[cek-1]=NULL;
cek--;
cout<<endl;
printf("Yakin  Anda Ingin Data Ini Dihapus ?? ");
cout<<endl;
printf("\nData dengan nilai = %i akan terhapus. [Tekan Enter]",hapus);
}
getch();
}
else
{
if(pil=='n')
{
if(cek==0)
printf("\n Maaf Tidak Ada Antrian Untuk Di Tampilkan. \n\n");
else
{
printf("\n");
for(int z=0; z<cek; z++)
{
printf(" [ %i ] \n",data[z]);
}
}
getch();
}
}
}
}
}while(pil!='y');
cout<<endl;
cout<<endl;
printf(" Yakin Anda Ingin Keluar .. ?? {{{ Tekan Enter Cak }}} ");
pil=getche();
}
 Hasil Running :

Pembahasan
            Program ini adalah contoh sebuah Queue atau bisa dibilang antrian, dan dalam program ini terdapat 4 menu, yaitu menu input antrian, menu delet antrian, menu view antrian, dan dalam program ini detentukan batas maxsimal 8 antrian, dan menggunakan perulangan do karena akan dilakukan penginputan berulang - ulang jadi setia input maka datanya akan bertambah
            Menu input antrian ini menggunakan if sebagai kondisi jika antian sudah memenuhi batas nya maka akan terdapat notif antrian penuh dan jika belum penuh maka masih dapat melakukan penginputan. Untuk melakukan penginputan menggunakan variable x dan kemudian di pindahkan ke variable array karena data – tersebut akan di tampung menjadi 1, dan gante elemen array dengan cek karena nilai cek akan bertambah setiap penginputan karena terdapat script ( cek++ ) sebagai penentu indek atau nomor input.
            Menu hapus antrian juga mempunyai if untuk menentukan kondisi jika tidak terdapat antrian maka terdapat notif “ Tidak Ada Antrian Untuk Dihapus “ dan jika terdapat antrian maka akan di hapus dan scripnya itu menggunakan for untuk menghapusnya
hapus=data[0];
for( v=0; v<cek; v++)
data[v]=data[v+1];
data[cek-1]=NULL;
cek--;
hapus=data[0] itu berguna untuk menunjukan nilai yang akan dihapus , dan cek dalam for sebagai batas dri peulangan dan cek itu terdapat nilai dri no antrian yang terakhir di input dan akan masuk nilainya ke variable hapus, karena melakukan perulangan pada antrian pertama, maka antrian pertama akan terhapus dengan script cek--, jadi nilai antrian pertama akan di kurang jd 0.
            Menu view antrian juga terdapat if sebagai kondisi untuk menentukan jika terdapat antrian maka akan kelar antrian tersebut dan jika tidak ada maka akan keluar notif. Untuk output lakukan perulangan for dengan batas perulangan cek (no antrian atau indek).
Script Praktikum 9.2
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct node{
int data;
struct node*p;};
void TambahElemen (struct node **d, struct node **b, int nilai){
/*membuat struktur node baru*/
struct node*temp;
temp=(struct node *)malloc (sizeof (struct node));

/*mendefinisikan field yang terdapat pada struktur node yang baru dialokasikan*/
temp->data=nilai;
temp->p=NULL;
if(*d== NULL){
*d= temp;
}else{
(*b)->p=temp;}
*b=temp;}
void HapusElemen (struct node **d, struct node **b){
struct node*temp;
if(*d == NULL){
printf("Tidak terdapat elemen dalam queue");
}else{
temp= *d;
*d= temp->p;
free(temp);
if(*d == NULL){
*b=NULL;
}
}
}
void TampilkanNilai(struct node *d){
int nilai;
while(d != NULL){
nilai = d->data;
printf("%d\n",nilai);
d=d->p;}
}
int main(void){
struct node*depan, *belakang;
depan = belakang =NULL;
TambahElemen(&depan,&belakang,10);
TambahElemen(&depan,&belakang,20);
TambahElemen(&depan,&belakang,30);
TambahElemen(&depan,&belakang,40);
TampilkanNilai(depan);
HapusElemen(&depan,&belakang);
printf("Nilai-Nilai didalam queue");
printf("Setelah penghapusan elemen pertama:\n");
TampilkanNilai(depan);
getch();
return 0;
}

Hasil Running

Pembahasan
            Program ini merupakan sebuah antrian dan dalam program ini terdapat penghapusan antrian. Dalam program ini menggunakan function, pointer dan juga linked list( temp -> data ) itu dinamakan linked list, berhupung saya belum paham mengenai liked list maka saya tidak akan membahasnya mungkin kalian dapat mencari di google atau mungkin saya akan membahasnya di postingan selanjutnya.
            Jadi dalam video ini terdapat function void TambahElemen yang berfungsi untuk menambahkan nilai dalam antrian, bisa dilihat di script ( terdapat script linked list )
            Function HapusElemen berguna untuk menghapus sebuah antrian di mana dalam function ini terdapat sebuah if untuk menentukan kodisi apakah terdapat antrian atau tidak.
            Dan untuk function TampilkanNilai berfungsi untuk menampilkan antrian yang belum dihapus antriannya dan yang sudah, jadi tergantung penempatan funtion jika function ditempatkan sebelum function hapus maka antrian yang sebelum di hapus akan tampil, dan jika di letakan setelah function hapus maka antrian pun berubah dan hasilnya antian yang telah terhapus yang akan keluar.
            Jadi script
TambahElemen(&depan,&belakang,10);
TambahElemen(&depan,&belakang,20);
TambahElemen(&depan,&belakang,30);
TambahElemen(&depan,&belakang,40);
Berfungsi untuk mendeskripsikan sebauh nilai dari antrian dan untuk menampilkannya menggunakan scipt TampilkanNilai(depan);
Nah itulah beberapa program Queue dan juga pembahasan yang dapat saya sharing kepada kalian, semoga ilmu yang saya bagikan dapat bermanfaat bagi kalian semua para pembaca, mungkin sampai disini dulu sharing tentang pemrograman khususnya program Queue atau Antrian yang bisa saya posting. Dan Jangan lupa ya jika kalian mempunyai kritik dan saran silahkan tambahkan pada kolom komentar. Terima kasih atas kunjungan kalian.



Kamis, 18 Mei 2017

Program Stack bahasa c++

            Assalamu’alaikum Wr, Wb, oke pada kesempatan kali ini saya akan membahas sebuah program yang bernama stack, stack ini merupakan sebuah tumpukan dan stack ini bersifat LIFO yaitu ( Last In Firs Out ) , contohnya seperti tumpukan piring saat akan mengambil piring maka piring paling atas ( terakhir dimasukan ) yang akan di ambil
            Oke Disini saya mempunyai beberapa contoh program stack, langsung saja tanpa berlama – lama kita masuk kecontoh pertama
Script Praktikum 8.1
#include <iostream.h>
#include <conio.h>
#define max 5

struct Tumpukan{
 int atas;
            int data[max];
            }T;

void awal(){
 T.atas=-1;
            }

int kosong(){
 if(T.atas==-1)
             return 1;
            else
             return 0;
                        }

int penuh(){
 if(T.atas==max-1)
             return 1;
            else
             return 0;
                        }


void input(int data){
 if(kosong()==1)
             {T.atas++;
                         T.data[T.atas]=data;
                         cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}
            else if(penuh()==0)
             {T.atas++;
                         T.data[T.atas]=data;
                         cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}

            else
                         cout<<"Tumpukan penuh";
            }

void hapus(){
            if(kosong()==0){
                        cout<<"Data teratas sudah terambil";
            T.atas--;
            }
            else
            cout<<"Data kosong";
            }

void tampil(){
 if(kosong()==0)
            {for(int i=T.atas;i>=0;i--)
             {cout<<"\nTumpukan ke "<<i<<"="<<T.data[i];}
                        }
            else
            cout<<"Tumpukan kosong";
            }

void bersih(){
 T.atas=-1;

cout<<"Tumpukan kosong!";
}

void main(){
int pil,data;
awal();
do
{
clrscr();
cout<<"1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukkan pilihan :";
cin>>pil;
switch(pil)
 {case 1:cout<<"Masukkan data = ";cin>>data;
                        input(data);
                                      break;
             case 2:hapus();
                         break;
             case 3:tampil();
                         break;
             case 4:bersih();
                         break;
             case 5: cout<<"Terimakasih, tekan enter untuk keluar";
             }
getch();     }
while(pil!=5);}


Hasil Running :

Pembahasan
            Program ini adalah contoh sebuah stack yang dimana di dalamnya terdapat operasi PUSH ( memasukan data ), POP ( menghapus data yang terakhir diinputkan ) Tampil ( Menampilkan isi tumpukan) CLEAR ( menghapus semua tumpukan ) dan exit. Hal pertama yang harus dilakukan adalah memilih dari ke 5 menu tersebut di mana setiap menu terdapat statemennya masing – masing dan stantemen itu terdapat dalam function.
            Operasi PUSH atau INPUT, dalam statement PUSH terdapat perintah if(kosong()==1) jadi jika tumpukan kosok maka kita akan menginput sebuah nilai yang nantnya akan ditampung atau ditumpuk dalam variable array data. Dan kondisi else if (penuh()==0) maka akan melakukan penginputan sekali lagi krn itu sbg pemberi tahu bahwa tumpukan hampir penuh
            Operasi POP atau Hapus dalam statement ini hampir sama yaitu terdapat kondisi if(kosong()==0) maksudnya adalah jadi tumpukan yang kosong itu tersisa 0 atau dianggapnya sudah penuh, dan function kosong itu mempunyai nilai 0 jika nilai T.atas lebih dari -1, dan mempunyai nilai satu jika T.atasnya itu -1, jadi selama nilai fungsi kosongnya bernilai 0 maka stack akan bisa di hapus dan juga dengan mengurangnya T.atas. misalnya t.atas = 5 jika di hapus maka tinggal 4 data yang tersisa, dan jika t.atas sudah mempunyai nilai 0 maka akan keluar notice Tumpukan Kosong.
            Operasi Tampilan atau VIEW untuk menampilkan stack LIFO maka hanya perlu dilakukan pemanggilan beserta perulangan for dan deremen, jadi jika menggunakan oprasi decremen maka yang akan keluar itu nilai yg terakhir diinputkan dan batasan dari perulangan nya adalah T.atas krn setiap melakukan penginputan nilai T.atas akan bertambah jd nilai T.atas menunjukan jumlah data dalam tumpukam  
Script Praktikum 8.2
#include<iostream.h>
#include<conio.h>
#include<string.h>
struct
{
char data [15][100], max[15];
int i,j;
}stack;
void push()
{
stack.i++;
cout<<" Masukan Data : ";
cin>>stack.max;
strcpy(stack.data[stack.i], stack.max);
}
void pop ()
{
if(stack.i>0)
{
cout<<" Data Yang Terambil : "<<stack.data[stack.i]<<endl;
stack.i--; stack.j--;
}
else
cout<<" Tak Ada Data Yang Terambil "<<endl;
}
void view(int n)
{
if(stack.j>0)
{
for(int e=n; e>=1; e--)
cout<<stack.data[e]<<endl;
}
else
{
cout<<" Tak Ada Data Tersimpan "<<endl;
}
}
void clear()
{
stack.j=0; stack.i=0;
}
void main()
{
int n, plh;
ayo:
clrscr();
cout<<" Contoh Program Stack [Tumpukan] \n\n ";
cout<<" Maksimal Tumpukan Data : "; cin>>n;
stack.data[n];
stack.i=0;
stack.j=0;
balik:
clrscr();
cout<<"\n 1. Push \n 2. Pop \n 3. View \n 4. Clear \n 5. Qiit \n";
cout<<"\n Pilih : "; cin>>plh;
cout<<endl;
if(plh==1)
{
if(stack.j<n)
{
stack.j++;
push();
}
else
{
cout<<" Tumpukan Penuh "<<endl;
getch();
}
goto balik;
}
else if(plh==2)
{
pop();
getch(); goto balik;
}
else if(plh==3)
{
view (stack.i);
getch(); goto balik;
}
else if(plh==4)
{
clear();
getch();
goto balik;
}
else if(plh==5)
{
getch(); goto ayo;
}
else
{
cout<<" Input Yang Anda Masukan Salah !!! "<<endl;
getch(); goto ayo;
}
}
Hasil Running

Pembahasan
            Program ini sama halnya dengan program sebelunya namun terdapat beberapa yang berbeda yaitu dalam program ini kita dapat menentukan batasan perulangan input dan output atau berapa maksimal tumpukan yang dapat diinputkan, dan dalam pemilihan menunya menggunakan if else dan menggunakan perulangan go to untuk kembali ke menu pemilihan .



Study Kasus Latihan 8.1
Konsep stack dilogikakan seperti sebuah tumpukan barang yang tersusun keatas dengan ketinggian tumpukan yang telah di tentukan, untuk mengilustrasikannya program dibawah ini.
Script Study Kasus Latihan 8.1
#include<conio.h>
#include<stdio.h>
#define N 20
main()
{
int nilai[N],i,jml;
printf(" Jumlah Maksimal Tumpukan (<=20) = ");
scanf("%d",&jml);
for(i=0; i<jml; i++)
{
printf(" Data ke-%d = ", i+1);
scanf("%d",&nilai[i]);
if(i==jml-1)
{
printf("Tumpukan Penuh");
getch();
}
}
for(i=jml-1; i>=0;i--)
{
printf("\n data ke-%d = %d", i+1, nilai[i]);
}
getch();
return 0;
}
Hasil Running

Pembahasan
            Ini adalah sebuah contoh program, pertama masukan jumlah tumpukan yang dapat di tampung dan maksimal tumpukan dibawah 20, karena data yang akan diinput akan di tampung dalam array maka lakukan penginputan dengan menggunakan for dan batasanya adalah nilai yang di inputkan pertama, masukan if dengan kondisi (i==jml-1) if ini berguna untuk memberitahu jika tumpukan suda penuh. Dan kondisi if i==jml-1 itu karena dalam array indeks pertama di hitung 0 dan batasan indeks itu adalah nilai dikurangi 1 jadi jika element arraynya 5 maka indeks terakhirnya 5-1=4. Untuk output gunakan for untuk outputnya namun i nya di dekremen kan (i--) karena stack ini mempunyai sifat LIFO ( last in first out ) jadi data yang di input terakhir akan keluar pertama.
Nah itulah beberapa program Stack dan juga pembahasan yang dapat saya sharing, semoga ilmu yang saya bagikan dapat bermanfaat bagi kalian semua para pembaca, mungkin sampai disini dulu sharing tentang pemrograman khususnya program Stack yang bisa saya posting. Dan Jangan lupa ya jika kalian mempunyai kritik dan saran silahkan tambahkan pada kolom komentar. Terima kasih atas kunjungan kalian.