Jumat, 18 Mei 2012

Program Kombinasi dari suatu bilangan dengan c++

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.
berikut adalah program dari combinmasi silahkan dipahami semoga dapat membantu masalah anda :

#include<iostream.h>
#include<conio.h>
int faktorial (int x);
void main()
{
    int n,r, kombinasi;
    cout<<" Program Menghitung Kombinasi(nCr)"<<endl;
    cout<<" Masukkan Nilai n : "; cin>>n;
    cout<<" Masukkan Nilai r : "; cin>>r;
    kombinasi=faktorial(n)/(faktorial(r)*faktorial(n-r));
    cout<<" Kombinasinya adalah: "<<kombinasi;
    getch();
}
    int faktorial (int n)
{
    int fak;
    if (n<=1)
    {
    fak=1;
    }
    else
    {
    fak=n*faktorial(n-1);
    }
    return (fak);
}
 

nah begitulah proram ini saya buat ,,,,,!  apabila ada yang kurang jelass tau pun kesalahan jangan sungkan untuk tinggalkan unek-unek ataun saran. terimakasihh atas kunjungan nya ,,

Algoritma dan program kombinasi

Algoritma :
Deklarasi
    n, r, i                                     : integer
    faktorn,  faktorr, faktornr    : integer
    hasil                                    : integer
Deskripsi
    read n
    read r
    faktorn    <- 1
    faktorr    <- 1
    faktornr<- 1
    for i <- n downto 0 do 
        faktorn <- faktorn * i
    end for
    for  i <- r  downto 0  do
        faktorr <- faktorr * i
    end for
    for  i <- n – r  downto 0  do 
        faktornr <- faktornr * i
    end for
    hasil <- faktorn / (faktorr * faktornr)
    write hasil
    end

Program Biasa :
#include <iostream.h>
#include <conio.h>
int main(){
int n,r,i;
int faktorn=1,faktorr=1,faktornr=1;
cout<<"\t\tKOMBINASI"<<endl;
cout<<"Masukkan n : ";
cin>>n;
cout<<"Masukkan r : ";
cin>>r;
for(i=n;i>0; i--){
faktorn=faktorn*i;}
for(i=r;i>0; i--){
faktorr=faktorr*i;}
for(i=n-r;i>0; i--){
faktornr=faktornr*i;}
cout<<"Kombinasi ("<<n<<","<<r<<") : "<<faktorn/(faktorr*faktornr);
getch();
return 0;}

Program Class :
#include <iostream.h>
#include <conio.h>
class kombinasi{
public:
void masukan();
void proses();
void keluaran();
private:
int n,r,i;
int faktorn,faktorr,faktornr;};
void kombinasi::masukan(){
cout<<"\t\tKOMBINASI"<<endl;
cout<<"Masukkan n : ";
cin>>n;
cout<<"Masukkan r : ";
cin>>r;}
void kombinasi::proses(){
faktorn=1;
faktorr=1;
faktornr=1;
for(i=n;i>0; i--){
faktorn=faktorn*i;}
for(i=r;i>0; i--){
faktorr=faktorr*i;}
for(i=n-r;i>0; i--){
faktornr=faktornr*i;}}
void kombinasi::keluaran(){
cout<<"Kombinasi ("<<n<<","<<r<<") : "<<faktorn/(faktorr*faktornr);}
int main(){
kombinasi x;
x.masukan();
x.proses();
x.keluaran();
getch();
return 0;}

Program Jeliot :
import jeliot.io.*;
public class MyClass {
public static void main() {
kombinasi x = new kombinasi();
x.masukan();
x.proses();
x.keluaran();}}
class kombinasi{
void masukan(){
System.out.print("\t\tKOMBINASI");
System.out.print("\n");
System.out.print("Masukkan n : ");
n = Input.readInt();
System.out.print("Masukkan r : ");
r = Input.readInt();}
void proses(){
faktorn =1;
faktorr =1;
faktornr =1;
for(i =n;i>0; i--){
faktorn =faktorn *i;}
for(i =r;i>0; i--){
faktorr =faktorr *i;}
for(i =n-r;i>0; i--){
faktornr =faktornr *i;}}
void keluaran(){
System.out.print("Kombinasi (");
System.out.print(n);
System.out.print(",");
System.out.print(r);
System.out.print(") : ");
System.out.print(faktorn/(faktorr *faktornr));}
private int n;
private int r;
private int i;
private int faktorn;
private int faktorr;
private int faktornr;}

Penjelasan :
Program di atas adalah program yang digunakan untuk mencari nilai kombinasi dari 2 bilangan yaitu n dan r. kombinasi sendiri mempunyai rumus n!/r!*(n-r)!. Jadi untuk pembilangnya adlah n faktorial dan untuk penyebutnya r faktorial kali dengan n-r faktorial. Untuk mencari nilai faktorial dari suatu bilangan maka digunakan fungsi perulangan atau for, untuk program di atas perulangan yang pertama untuk mencari hasil dari faktorial bilangan n dan perulangannya mengalami pengurangan 1, contoh 5! adalah 5x4x3x2x1=120 dan akan disimpan pada variabel faktorn, begitu pula untuk  mencari nilai r faktorial dan n-r faktorial yang akan disimpan pada variabel faktorr dan faktornr. Jadi kita tinggal menampilkan hasil dari faktorn dibagi dengan faktorr kali faktornr.

Program Menghitung Nilai Kombinasi

#include <cstdlib>
#include <iostream>


using namespace std;
 int faktorial (int n)
{
    int fak;
    if (n<=1)
    {
    fak=1;
    }
    else
    {
    fak=n*faktorial(n-1);
    }
    return (fak);
}
int main(int argc, char *argv[])
{
    int n,r, kombinasi;
    cout<<" Program Menghitung Kombinasi"<<endl;
    cout<<" \n Masukkan Nilai n : "; cin>>n;
    cout<<" \n Masukkan Nilai r : "; cin>>r;
    kombinasi=faktorial(n)/(faktorial(r)*faktorial(n-r));
    cout<<" \n Kombinasinya adalah: "<<kombinasi;
    system("PAUSE");
    return EXIT_SUCCESS;
}

Hasilnya:

program menghitung nilai Kombinasi dan Permutasi dengan Rekursif

#include <cstdlib>
#include <iostream>
using namespace std;
 class rekursi{ public: rekursi();
  int faktorial(int);
  int kombinasi(int,int);
   int permutasi(int,int);
    private: int n,r; };
     rekursi::rekursi(){ cout<<"masukan nilai n:";cin>>n;
     cout<<"masukan nilai r:";cin>>r;
     cout<<"nilai Kombinasi : "<<kombinasi(n,r);
     cout<<endl<<"nilai Permutasi : "<<permutasi(n,r);
     }
     int rekursi::faktorial(int n){
                              if ((n == 0) || (n == 1 ))
      return (1);
      else return (n * faktorial(n-1));
      }
      int rekursi::kombinasi(int n,int r){ if(n<r){
          return 0;
      }
       else return (faktorial(n)/faktorial(r)*faktorial(n-r));
       }
        int rekursi::permutasi(int n, int r){ if(n<r){
        return 0;
       }
       else return (faktorial(n) / faktorial(n-r));
        }
         int main(int argc, char** argv) {
       rekursi a;
       system("PAUSE");
       return 0;
       }