Minggu, 04 Juni 2017

PRAKTIKUM_MODUL_8

MODUL VIII STACK


Praktikum
Studi Kasus 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 diatas 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.




Studi Kasus 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 seperti dengan study kasus sbelumnya, namun terdapat beberapa yang berbeda yaitu dalam program ini kita dapat menentukan batasan perulangan input dan output atau berapa maksimal tumpukan yang dapat diinputkan.





Latihan

Konsep stack dilogikakan seperti sebuah tumpukan barang yang tersusun keatas dengan ketinggian tumpukan yang telah di tentukan, untuk mengilustrasikannya program dibawah ini.

#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 :
            Program ini melakukan inputan data penuh,kita masukan dulu tampungan data array nya maksimal 20,Kemudian menggunakan perulangan for nilai pertama yang diinputkan.


Tidak ada komentar:

Posting Komentar