Selasa, 06 Desember 2011

QUEUE (ANTRIAN)

Queue (antrian) adalah barisan elemen yang apabila elemen ditambah maka penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen dilakukan di elemen paling depan (front). Oleh karena itu, queue bersifat FIFO (first in first out).

Operasi-operasi dasar dari sebuah queue adalah : 
1.  Enqueue : proses penambahan elemen di posisi belakang 
2.  Dequeue : proses pengambilan elemen di posisi depan   

Selain operasi dasar di atas, ada pula  operasi-operasi lain yang dapat dilakukan 
terhadap sebuah queue yaitu : 
1.  Operasi pemeriksaan queue kosong (fungsi kosong) 
2.  Operasi pemeriksaan queue penuh (fungsi penuh). 
3.  Operasi inisialisasi queue (fungsi inisialisasi) 

Antrian Apotek K-24
Pada kasus antrian ini kami mengambil sistem antrian di apotek K-24. Sistem antrian pada apotek ini ada 2 yaitu antrian untuk pembelian obat dan antrian untuk periksa ke dokter. Pada antrian pembelian obat sistem antriannya yaitu pembeli memesan dan konsultasi obat apa yang akan dibeli kepada apoteker dan untuk pembeli lain yang datang baru yang ingin memesan obat untuk dibeli akan dilayani oleh apoteker yang lainnya. Lalu pembeli pertama menuju kasir dan pembeli selanjutnya akan mengantri dibelakang pembeli yang datang terlebih dahulu dengan membawa obat yang telah dipilih dan membayar obat tersebut di kasir. Jadi prosesnya akan berjalan terus seperti operasi dalam queue yaitu enqueue yang mana ada penambahan pembeli di posisi belakang dan dequeue yang mana ada pengambilan elemen di posisi depan maksudnya adanya proses pembayaran setelah itu pembeli yang sudah membayar meninggalkan antrian. Pada apotek ini terdapat banyak apoteker yang dapat melayani banyak pembeli namun untuk proses pembayaran harus dengan antrian karena satu kasir melayani banyak pembeli yang ingin membayar.

Gambaran :


Kasus yang ini yaitu antrian untuk periksa ke dokter yang ada di apotek k24. Sistem antrian nya pertama pasien melakukan pendaftaran, kemudian pasien diberi nomor antrian yang nantinya akan di panggil sesuai nomor antrian. Begitu pula dengan pasien berikutnya akan di panggil sesuai nomor antrian yang diberikan pada saat pendaftaran. Jadi pada dasarnya prinsipnya sama dengan antrian yang lain, yang mana ada proses enqueue dan dequeue yaitu ada penambahan elemen di belakang dan pengambilan elemen di depan.


Demikian kajian mengenai antrian pembelian obat dan periksa di apotek K-24 yang mana telah dijelaskan diatas. Dengan asumsi setiap pembeli yang pertama datang antri di paling depan dan dilayani terlebih dahulu, tentunya kita sudah sering menerapkannya di dalam kehidupan sehari-hari. Semoga bermanfaat.... :))

Jumat, 08 Juli 2011

Program C++ Permutasi dan Kombinasi


Well ... Now we will discuss about the permutations and combinations which are part of combinatorics. combination combinatorics in mathematics means the set of objects that are not concerned with the order. The combination of different permutations of the importance of the object sequence. Meanwhile, the permutation is a rearrangement of a collection of objects in a different order than the original sequence. For example, the words in the previous sentence can be rearranged as "is a permutation of a sequence of distinct sequence that was originally a collection of objects in the rearrangement." The process of returning the objects in a standard order (as per the provisions) is called sorting.
hmmm .. friends can see the algorithms and programs below:

Algoritma
Algoritma Permutasi
Deklarasi
n, r                 : integer (input)
x,y                  : integer
p                     : integer (output)

Deskripsi
read(n,r)
x = 1
y = 1
for i <= 1 to n do
x = x*i
for j ß 1 to n-r do
                   y = y*j
endfor
endfor
p = x/y
write (p)

Algoritma Kombinasi
Deklarasi
n, r                 : integer (input)
x,y,z               : integer
c                     : integer (output)

Deskripsi
read(n,r)
x = 1
y = 1
z = 1
a = n – r
for i ß 1 to n do
x = x*i
for j ß 1 to r do
                   y = y*j
for k ß 1 to a do
                         z = z*k
endfor
endfor
endfor
           c = x / (z*y)
write (c)
Berikut kode programnya :

#include <cstdlib>
#include <iostream>

using namespace std;
class matdis{
      friend istream& operator>>(istream&, matdis&);
      friend ostream& operator<<(ostream&, matdis&);
      public:
             matdis();
             int permutasi();
             int kombinasi();
             void pilihan();
             void exit();
      private:
              int n,r,x,y,z,a,p,c;
              };
      matdis::matdis(){
                       cout<<"\t==PROGRAM PERMUTASI DAN KOMBINASI=="<<endl;
                       cout<<"\t====SILAHKAN PILIH PILIHAN ANDA===="<<endl;
                       cout<<"\t========== 1. PERMUTASI ==========="<<endl;
                       cout<<"\t========== 2. COMBINASI ==========="<<endl;
                       cout<<"\t========== 0. EXIT      ==========="<<endl;
                       cout<<"\t========== TERIMA KASIH ==========="<<endl;
                       };
                      
      int matdis::permutasi(){
           cout<<"Program Menghitung Permutasi"<<endl;
           cout<<"Masukkan n harus lebih besar dari r :"<<endl;
           cout<<"Masukkan n :"; cin>>n;
           cout<<"Masukkan r :"; cin>>r;
           x=1;
           y=1;
           for(int i=1; i<=n; i++){
                   x=x*i;
                   }
           for(int j=1; j<=(n-r); j++){
                   y=y*j;
                   }
           p=x/y;
           cout<<"Nilai n ="<<n<<endl;
           cout<<"Nilai r ="<<r<<endl;
           cout<<"Nilai n! ="<<x<<endl;
           cout<<"Hasil (n-r)! ="<<y<<endl;
           cout<<"Hasil Permutasi "<<"("<<n<<","<<r<<") : "<<p<<endl;
           pilihan();
           return p;
           }
          
      int matdis::kombinasi(){
           cout<<"Program Menghitung Kombinasi"<<endl;
           cout<<"Masukkan n harus lebih besar dari r :"<<endl;
           cout<<"Masukkan n :"; cin>>n;
           cout<<"Masukkan r :"; cin>>r;
           x=1;
           y=1;
           z=1;
           a=(n-r);
           for(int i=1; i<=n; i++){
                   x=x*i;
                   }
           for(int j=1; j<=r; j++){
                   y=y*j;
                   }
           for(int k=1; k<=a; k++){
                   z=z*k;
                   }
           c=x/(z*y);
           cout<<"Nilai n ="<<n<<endl;
           cout<<"Nilai r ="<<r<<endl;
           cout<<"Nilai n! ="<<x<<endl;
           cout<<"Hasil r! ="<<y<<endl;
           cout<<"Nilai (n-r)! ="<<z<<endl;
           cout<<"Hasil Kombinasi "<<"("<<n<<","<<r<<") : "<<c<<endl;
           pilihan();
           return c;
           }
      void matdis::pilihan(){
                int pil;
                cout<<endl;
                cout<<"masukan pilihan anda = ";
                cin>>pil;
                switch(pil){
                 case 1 : permutasi ();break;
                 case 2 : kombinasi ();break;
                 case 0 : exit (); break;
                 default :
                         cout<<"Maaf anda salah tulis"<<endl;
                         cout<<"Pilih kembali Pilihan "<<endl;
                         pilihan();
                          break;      
                 }}
      void matdis::exit(){
                          cout << "TERIMA KASIH"<<endl;
                          }

int main(int argc, char *argv[])
{
    matdis x;
    x.pilihan();
    system("PAUSE");
    return EXIT_SUCCESS;
}


explanation:
The above program is a program to compute combinations and permutations. Which we also need to know about the factorial because it is closely connected with combinatorics. In this program uses a for loop to solve this problem. Thank you and may be useful.

Template by:

Free Blog Templates