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


#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);
}
}

–>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

Video Aplikasi :

Dilihat sebanyak : 10707 kali

Leave a Reply

Your email address will not be published. Required fields are marked *

[+] kaskus emoticons nartzco

This site uses Akismet to reduce spam. Learn how your comment data is processed.