Senin, 07 Desember 2015

TUGAS 8 (QUEUE ATAU ANTRIAN MAX 6)

Queue atau Antrian
Max 6 serta contoh programnya

Queue / Antrian
Penghapusan data head  A        B        C        D
                             0        1        2        3        4        (5)
                                                                             N=6
                                                                             max -1= n-1
                                                                                       = 6-1
                                                                                       =(5) pemasukan tail data

í Kosong LAWANNYA ada isinya
í Penuh LAWANNYA ada isinya

A        B        C        D        E
0        1        2        3        4
Head           tail    tail    tail

*menambahkan elemen D          *menambahkan elemen E
*menghapus elemen A

Tail    =tail + 1                tail    =tail+1                  -DEUEVE (A)
          =2+1                               =3+1                      -tail  =tail -1
          =3                                   =4                         =4-1 = 3
Enqueue (D)                    Enqueueu (E)
          E                                                        B        C        D
          3        4        5                                     0        1        2
                                      Tail=3                                                          headnya= 0








SOAL :

Berikan gambaran / ilustrasi dari kasus antrian berikut :
a)   Diketahui suatu antrian / queue dengan max =6 ?
b)   Lakukan enqueue 4 elemen ke dalam antrian, dimanakah posisi haid dan tail?
c)    Kemudian lakukan dequeue 2 elemen dari antrian maka dimana posisi head dan tail ?
d)   Dari keadaan di atas bagaimanakah kondisi isfull dan isempety nya ?

Penyelesaian :

 #include <iostream.h>  
#include <conio.h>  
#define MAX 6  
    
typedef struct{  
int data[MAX];  
int head;  
int tail;  
}  
Queue;  
Queue antrian;  
void Create(){  
antrianantrian.head=antrian.tail=-1;  
}  
    
 int IsEmpty(){  
  if(antrian.tail==-1)  
  return 1;  
else  
return 0;  
  }  
  
int IsFull(){  
if (antrian.tail==MAX-1) return 1;  
  else return 0;  
}  
    
//fungsi memasukkan data  
    
  void Enqueue(int data){  
if(IsEmpty()==1){  
antrianantrian.head=antrian.tail=0;  
antrian.data[antrian.tail]=data;  
    
cout << "\t Silahkan Masuk !! \n" ;  
cin >> antrian.data[antrian.tail];  
  void Tampil();  
{  
  if(IsEmpty()==0){  
  for(int i=antrian.head;i<=antrian.tail;i++){  
  cout << antrian.data[i];  
}  
}else  
  cout<< "data kosong!";  
};  
}else  
if(IsFull()==0){  
  antrian.tail++;  
antrian.data[antrian.tail]=data;  
cout << "\t Silahkan Masuk !! \n" << antrian.data[antrian.tail];  
}  
    
  }  
    
int Dequeue(){  
  int i;  
  int e = antrian.data[antrian.head];  
  for(i=antrian.head;i<=antrian.tail-1;i++){  
  antrian.data[i]= antrian.data[i+1];  
  }  
  antrian.tail--;  
  return e;  
  }  
    
  void clear(){  
antrianantrian.head=antrian.tail=-1;  
  cout << "Data Clear" ;  
  }  
  void Tampil()  
  { int jum;  
  jum=0;  
    
  if(IsEmpty()==0){  
for(int i=antrian.head;i<=antrian.tail;i++){  
jum++;  
    
  cout << antrian.data[i]<< "\n";  
  }  
cout << "\njumlah yang mengantri saat ini : "<< jum << "orang";  
  }  
  else  
  cout << "Data Kosong!\n";  
  }  
    
  //sebagai nasabah  
void nasabah()  
{  
  int data;  
  char lagi;  
  do{  
  clrscr();  
  cout << "\t+=================================+\n";  
  cout << "\t| menu nasabah |\n";  
  cout << "\t+=================================|\n";  
  cout << "\t| tekan (a) untuk masukkan data |\n";  
  cout << "\t| tekan (b) melihat data antrian |\n";  
cout << "\t| tekan (x) keluar |\n";  
  cout << "\t+=================================|\n";  
  cout << "pilihan : ";  
  cin >> lagi;  
  if((lagi=='x') || (lagi=='X'))  
  { cout << "terima kasih\n" ;  
    
  break;  
  }  
    
  switch(lagi)  
  {  
case 'a':  
  cout << "masukkan data: " << &data << " ";  
Enqueue(data);  
  break;  
case 'b': Tampil();  
break;  
    
  }getch();  
  } while(lagi !='x');  
getch();  
  }  
    
  //memasukkan password  
  void password()  
  {  
  char nama[20], id[10], password[4];  
  int i;  
{  
  clrscr();  
    
  atas:  
  clrscr();  
  cout << "\t\t+===============================================+\n";  
  cout << "\t\t| S E L A M A T D A T A N G |\n";  
  cout << "\t\t| jika anda admin dari teller |\n";  
  cout << "\t\t|Silahkan masukkan User Name & 3 digit Password |\n";  
  cout << "\t\t+===============================================+\n";  
  cout << "\t\t UserName : " ; cin>>nama;  
  cout << "\t\t No. Identitas : "; cin>>id;  
  cout << "\t\t Password : " ;  
 for(i=0; i<=2; i++)  
  {password[i]=getch();  
  cout << "\bX";  
  }  
  cout << "\n\t\t+=============================================+\n";  
  if (strcmp(password,"aaa")==0)  
  {  
  cout << "\n\n\t\t Anda Masuk Sebagai TEllER\n";  
  cout << "\t\t User :" << nama << "\n";  
  cout << "\t\t No. Identitas : " << id << "\n";  
  cout << "\n\n\t\tTekan Sembarang tombol untuk ke menu teller..!";  
  goto bawah;  
  }  
  else  
  {  
  cout << "\t\t\tmaaf password salah!!!\n" ;  
  cout << "\t\tketik sembarang tombol untuk kembali ke menu: ";  
  goto atas;  
    
 }  
  bawah:  
  getch();  
  }  
  }  
    
  //void teller  
  void teller()  
  {char menu;  
  password();  
  do{  
  clrscr();  
  cout << "\t\t+=================================+\n";  
  cout << "\t\t| menu pilihan untuk TELLER |\n";  
  cout << "\t\t+=================================+\n";  
  cout << "\t\t| tekan (a) untuk menghapus data |\n";  
  cout << "\t\t| tekan (b) melihat data antrian |\n";  
  cout << "\t\t| tekan (c) untuk mereset |\n";  
  cout << "\t\t| tekan (x) untuk keluar |\n";  
  cout << "\t\t+=================================+\n";  
  cout << "pilihan : " ;cin>> menu;  
  if((menu=='x') || (menu=='X'))  
  { cout << "terima kasih\n";  
    
  break;  
  }  
    
  switch(menu)  
  {  
  case 'a': cout << "Elemen yang keluar : ";  
  Dequeue();  
  break;  
  case 'b': Tampil();  
  break;  
  case 'c': clear();  
  break;  
  }getch();  
  } while(menu !='x');  
    
  }  
    
  void main(){  
  char pil;  
    
  Create();  
  do{  
  clrscr();  
 //fflush(stdin);  
  cout << "\t\t+=====================================+\n";  
  cout << "\t\t| Bank Mandiri |\n";  
  cout << "\t\t| jalan Menukan |\n";  
  cout << "\t\t| Yoggyakarta |\n";  
  cout << "\t\t+=====================================+\n";  
  cout << "\t\t| tekan (n) untuk Nasabah |\n";  
  cout << "\t\t| tekan (t) untuk Teller |\n";  
  cout << "\t\t| tekan (k) keluar dari program |\n";  
  cout << "\t\t+=====================================+\n";  
  cout << "pilihan : ";  
  cin >> pil;  
  if((pil=='k') || (pil=='k'))  
 { cout << "terima kasih";  
  break;  
  }  
    
  switch(pil)  
  {  
  case 'n': nasabah();  
 break;  
  case 't': teller();  
  break;  
    
 }  
    
  }while(pil!='k');  
  



Tidak ada komentar:

Posting Komentar