Muhammad Syarif

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.

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

–>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 : 10780 kali