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 Permutasi k unsur dari n unsur adalah semua urutan yang berbeda yang mungkin dari k unsur yang diambil dari n unsur yang berbeda. Banyak permutasi k unsur dari n unsur ditulis atau .
- 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 Setiap himpunan bagian dengan k unsur dari himpunan dengan unsur n disebut kombinasi k unsur dari n yang dilambangkan dengan ,
- 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 :
#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. Syarif\n"); printf("\tJurusan : Teknik Komputer Jaringan dan Media Digital\n"); printf("\tNIM/No Reg : 49013075\n"); printf("\tBlog : blog.mhdsyarif.com\n"); 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 k\n"); //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("\n\tAnda tidak memilih P atau C"); //Maka pesan ini akan dimunculkan pada layar printf("\n\tIngin 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); } }
1 2 |
<br class="nc" />[/citem]<br class="nc" />[citem title="Contoh Soal Permutasi dan Kombinasi" id="citem_85" parent="collapse_62"]<br class="nc" /> 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
1 |
<br class="nc" />[/citem]<br class="nc" />[citem title="Hasil program" id="citem_43" parent="collapse_62"]<br class="nc" /><a href="http://blog.mhdsyarif.com/wp-content/uploads/2013/11/hasil-soa-lprogram-permutasi-dan-kombinasi.png"><img alt="hasil-soa-lprogram-permutasi-dan-kombinasi" src="http://blog.mhdsyarif.com/wp-content/uploads/2013/11/hasil-soa-lprogram-permutasi-dan-kombinasi.png" width="597" height="313" /></a><br class="nc" />[/citem]<br class="nc" />[/collapse] |
Video Aplikasi :
Dilihat sebanyak : 10707 kali
Leave a Reply