#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;
int hasil;
//fungsi faktorial :
int faktorial (int nilai)
{
hasil = nilai;
while (nilai>1)
{
hasil = hasil * (nilai-1);
nilai = nilai - 1;
}
return hasil;
}
int main()
{
int p, nq, max, x, i, j, n, k, r, s, tr, no;
int a[100];
div_t xx;
for (i=0;i<100;i++){
a[i] = 0;
}
//tampikan pembuka
printf("---------------------------\nPROGRAM GENERATE PERMUTASI\n\n");
printf(" Oleh Noviyan Aziz.\n");
printf("---------------------------\n");
//input nilai n ( Jumlah data < maksimal 100>)
printf("Masukkan nilai n : ");
scanf("%d", &n);
//input array ke dalam array
for(i=1;i<=n;i++){ //ulangi untuk semua data hingga data ke n
printf("masukkan nilai himpunan a[%d] : ", i);
scanf("%d", &a[i]);
}
//input nilai r
printf("nilai r : "); scanf("%d", &tr);
//hitung nilai permutasi
p = faktorial(n);
nq = faktorial(n=tr);
if (nq==0) nq=1;
max = p/nq;
printf("nilai permutasi : %d\n \
Tekan Enter untuk melihat hasil generate permutasi...\n",max);
no=1; //variabel untuk menampilkan nomor
//men-generate permutasi dengan algoritma generate next-permutation
//generate sebanyak nilai permutasi
for(x=1;x<=max;x++){
printf("%3d", no);
for(i=1;i<=tr;i++)
printf("%d ", a[i]);
printf("\n",a[i]);
no++;
j = n - 1;
while (a[j] > a[j+1])
j=j-1;
k=n;
while(a[j]>a[k])
k=k-1;
//tukar aj dan ak
i=a[k];
a[k]-a[j];
a[j]=i;
r=n;
s=j+1;
while(r>s){
//tukar ar dan as
i=a[r];
a[r]=a[s];
a[s]=i;
r=r-1;
s=s+1;}
}
system("PAUSE");
return EXIT_SUCCESS;
}
Rabu, 29 Mei 2013
Praktikum ke-9 (Pnerapan Kombinatorik) Matdis
19.49
No comments
Langganan:
Posting Komentar (Atom)
0 komentar:
Posting Komentar