Aplikasi Perhitungan Permutasi dan Kombinasi dengan Fungsi Rekursif Menggunakan Bahasa C

Pada kesempatan kali ini saya membuat aplikasi sederhana menggunakan beberapa variabel, fungsi, array, operator, control flow dan fungsi rekursif.

Deskripsi aplikasi :

Aplikasi ini menghitung permutasi dan kombinasi yang terdiri dari beberapa variabel, fungsi, array, operator, control flow dan fungsi rekursif dalam bahasa c.

  • Permutasi adalah susunan unsur-unsur yang berbeda dalam urutan tertentu. Pada permutasi urutan diperhatikan sehingga aPermutasi k unsur dari n unsur badalah semua urutan yang berbeda yang mungkin dari k unsur yang diambil dari n unsur yang berbeda. Banyak permutasi k unsur dari n unsur ditulis cataud .
  • Kombinasi adalah susunan unsur-unsur dengan tidak memperhatikan urutannya. Pada kombinasi AB = BA. Dari suatu himpunan dengan n unsur dapat disusun himpunan bagiannya dengan untuk bSetiap himpunan bagian dengan k unsur dari himpunan dengan unsur n disebut kombinasi k unsur dari n yang dilambangkan dengan , e
  • Fungsi Rekursif adalah sebuah fungsi yang memanggil dirinya sendiri. Fungsi rekursif akan sangat berguna untuk memecahkan kasus permasalahan tertentu dimana solusinya dapat diperoleh dari bentuk permasalahan yang lebih sederhana dari permasalahan yang serupa, dan solusi dari bentuk permasalahan yang lebih sederhana tadi diperoleh dari bentuk permasalahan yang lebih sederhana lagi namun serupa, demikian seterusnya.

Flow chart :

PermutasidanKombinasi

[collapse id=”collapse_62″]
[citem title=”Kode Program” id=”citem_46″ parent=”collapse_62″]
[c language=”c++”]
#include <stdio.h> //mengakses library stdio.h untuk fungsi input/ouput

int faktorial(int N); //Prototype Fungsi

int main(void) //Fungsi yang harus ada pada setiap program C

{
int hasil; //Deklarasi Variabel, hasil merupakan variabel bertipe integer
int n,k, Y=1;
char proses[2];//Deklarasi array 1-dimensi
char yesno[2];//Deklarasi array 1-dimensi

printf("t==============================================n");
printf("tNama       :    Mhd. Syarifn");
printf("tJurusan    :    Teknik Komputer Jaringan dan Media Digitaln");
printf("tNIM/No Reg :    49013075n");
printf("tBlog       :    syarief.w.pwn");
printf("t==============================================n");
printf("tProgram Menghitung Permutasi atau Kombinasi n");
printf("tnPk atau nCk n");
printf("t==============================================n");

while(Y) {

printf("tMasukkan nilai n : "); //Menampilkan output pada layar
scanf("%d",&n); //Fungsi untuk meminta/menerima nilai yang akan dikonversikan menjadi nilai integer
printf("tMasukkan nilai k : ");//Menampilkan output pada layar
scanf("%d",&k); //Fungsi untuk meminta/menerima nilai yang akan dikonversikan menjadi nilai integer

if (n<k) { //jika nilai n kecil dari k
printf("tNilai n tidak boleh lebih kecil dari kn"); //Pesan ini akan ditampikan di layar
}
else  //Jika tidak
{
printf("tPilih P (permutasi) atau C (kombinasi) : "); //Pesan ini akan ditampilkan di layar
scanf("%s",&proses[0]); //Fungsi untuk meminta/menerima nilai yang akan dikonversikan menjadi nilai karakter
if (proses[0]==’p’ || proses[0]==’P’) //Jika proses sama dengan p atau P
{
hasil = faktorial(n)/faktorial(n-k);//Proses perhitungan permutasi akan dijalankan
printf("n n");
printf("t%dP%d = %ld",n,k,hasil);//Hasil output
}
else if (proses[0]==’c’ || proses[0]==’C’) //Jika proses sana dengan c atau C
{
hasil = faktorial(n)/(faktorial(k) * faktorial(n-k));//Proses perhitungan kombinasi akan dijalankan
printf("n n");
printf("t%dC%d = %ld",n,k,hasil); //Hasil output
}
else //Jika tidak memilih p atau P dan C atau C
printf("ntAnda tidak memilih P atau C"); //Maka pesan ini akan dimunculkan pada layar

printf("ntIngin mengulang? <y/n> "); //Menampilkan informasi/output
scanf("%s",&yesno[0]);//Fungsi menerima/meminta nilai yang akan dikonversikan menjadi nilai karakter
if (yesno[0]==’Y’||yesno[0]==’y’) //Fungsi logika/pernyataan
Y=1;//Jika y sama dengan 1, maka program akan mengulang
else if (yesno[0]==’N’||yesno[0]==’n’||yesno[0]!=’Y’||yesno[0]!=’y’) //jika tidak program akan ditutup
Y=0;
}
}
}

int faktorial(int N) //Defenisi fungsi faktorial
{
int F;
if (N<=1)
{
return(1);
}
else
{
F = N * faktorial(N-1); //Fungsi rekursif (memanggil dirinya sendiri)
return(F);
}
}
[/c]


[/citem]
[citem title="Contoh Soal Permutasi dan Kombinasi" id="citem_85" parent="collapse_62"]
Soal Permutasi

–>Banyaknya bilangan yang terdiri atas 2 angka yang berbeda yang dapat disusun dari angka-angka 3, 5, dan 7 ?

Jawab:
Banyaknya bilangan yang terdiri atas 2 angka berbeda dan disusun dari angka-angka 3, 5, dan 7 adalah sama dengan permutasi yang terdiri atas dua unsur yang dipilih dari 3 unsur, P (3, 2)
P (3, 2) = 3!/(3-2)!
             = 3!/1!
             = 3 x 2 x 1!/1!
             = 2 x 3
             = 6

Soal Kombinasi

–> Dari 3 siswa, yaitu Budi, Rendi, dan Rema akan dibentuk pasangan ganda bulu tangkis. Berapa pasangan ganda yang dapat dibentuk dari ketiga siswa tersebut ?

Jawaban:

Banyaknya pasangan ganda bulu tangkis yang dapat dibentuk adalah C(3, 2)
C (3, 2) = 3!/(3-2)! 2!
             = 3!/1! 2!
             = 3 x 2!/1! 2!
             = 3/1
             = 3

[/citem]
[citem title="Hasil program" id="citem_43" parent="collapse_62"]
hasil-soa-lprogram-permutasi-dan-kombinasi
[/citem]
[/collapse]

Video Aplikasi :

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s