belajar komputer

Sabtu, 29 September 2012

Program Permutasi Dan Kombinasi

Kombinasi adalah menggabungkan beberapa objek dari suatu grup tanpa memperhatikan urutan. Di dalam kombinasi, urutan tidak diperhatikan.
{1,2,3} adalah sama dengan {2,3,1} dan {3,1,2}.
Contoh: Seorang anak hanya diperbolehkan mengambil dua buah amplop dari tiga buah amplop yang disediakan yaitu amplop A, amplop B dan amplop C. Tentukan ada berapa banyak kombinasi untuk mengambil dua buah amplop dari tiga buah amplop yang disediakan?
Solusi: Ada 3 kombinasi yaitu; A-B, A-C dan B-C.
Sedangkan permutasi adalah menggabungkan beberapa objek dari suatu grup dengan memperhatikan urutan. Di dalam permutasi, urutan diperhatikan.
{1,2,3} tidak sama dengan {2,3,1} dan {3,1,2}
Contoh: Ada sebuah kotak berisi 3 bola masing-masing berwarna merah, hijau dan biru. Jika seorang anak ditugaskan untuk mengambil 2 bola secara acak dan urutan pengambilan diperhatikan, ada berapa permutasi yang terjadi?
Solusi: Ada 6 permutasi yaitu; M-H, M-B, H-M, H-B, B-M, B-H.
Salah satu aplikasi kombinasi dan permutasi adalah digunakan untuk mencari probabilitas suatu kejadian.

 contoh program:

program permutasi;
uses wincrt;
type data = array[1..10] of char;
var
ax : data;
i,n : byte;
procedure permutas(a : data; mulai : byte);
var
i : byte;
temp : char;
begin
if mulai=n then
begin
for i:=1 to n do
write(a[i]);
writeln;
end
else
begin
for i:= mulai to n do
begin
temp:=a[i];
a[i]:=a[mulai];
a[mulai]:=temp;
permutas(a,mulai+1);
end;
end;
end;
begin
writeln ('NAMA : MUKLISIN');
writeln ('NIM  : 11295100');
writeln;
writeln ('=====================');
writeln ('  PROGRAM PERMUTASI  ');
writeln ('=====================');
write('Masukan jumlah (N)  = ');readln(n);
for i:=1 to n do
ax[i]:=chr(i+64);
permutas(ax,1);
end.


contoh program permutasi yang lengkap:

(*******************************)
 (* Pogram permutasi dari sekelompok karakter *)
 (*******************************)

program susun_Permutasi;
Uses wincrt;
const Max= 5;
type larik = array [1..Max] of char;
Var A           : Larik;
    c_Permutasi,
    C_elemen,I  : integer;
    lagi        : char;


(*********************************)
(* Procedure penyusunan permutasi *)
(*********************************)
Procedure permutasi (Var B : integer ; A : larik;
                    K,N    : integer);
var  I     : integer;
     Temp  : char;
begin
     if K = N then
        begin
             B := succ(B);
             write('Permutasi ke', B:2,':');
             for I := 1 to N do
             write(A[I]:3);
             writeln;
        end
     else
         for I := K to N do
             begin
                  Temp := A[I];
                  A[I] := A[K];
                  A[K] := Temp;
                  permutasi (B, A, K+1 ,N)
             end

end;              (* Procedure permutasi *)


(**********************************)
(*         PROGRAM UTAMA          *)
(**********************************)


begin
repeat
clrscr;
writeln(' NAMA : MUKLISN ');
writeln(' NIM  : 11295100');
WRITEln('=========================================');
write('berapa karakter yang akan dipermutasikan?');
repeat
gotoxy(47,4);write(' ');
gotoxy(47,4);readln(c_elemen);
until c_elemen <= max;

{* menyusun karakter yang akan dipermutasikan *}

for I := 1 to C_elemen do
A[I] := chr(I+64);

clrscr;
write('menyusun permutasi untuk');
writeln(C_elemen:2, 'karakter');
writeln('-------------------------------------');
writeln;

(* proses mencari permutasi *)
c_permutasi:=0;
permutasi(c_permutasi, A, 1, C_elemen);

(* mencetak hasil *)
writeln;
writeln('banyaknya permutasi: ', C_Permutasi:3);
writeln;
write('akan coba lagi? (Y/T) or (y/t): ');readln(lagi);
until not (lagi in [ 'Y' , 'y']);
end.

  hasilnya: