Senin, 28 Mei 2012

C++ Untuk Mengenerate Permutasi

22.51


Dibawah Ini Akan Saya Deskripsikan Source Code C++ Nya :


#include
#include
#include

using namespace std;


    int hasil;
    //funsi faktorial :
            int faktorial (int nilai)
            {
                hasil = nilai;
                while(nilai>1)
                {
                              hasil = hasil*(nilai-1);
                              nilai = nilai-1;
                              }
                              return hasil;
                              }
    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;
                             }
    //Tampilkan pembuka
    printf("---------------------------------------------------------------------\n PROGRAM GENERATE PERMUTASI\n\n");
    printf("---------------------------------------------------------------------\n Raizexe [11018036]  UNIVERSITAS AHMAD DAHLAN\n");
    printf("---------------------------------------------------------------------\n");
   
    //input nilai n(jumlah data )
            printf("Masukan Banyak-nya Nilai N : ");
            scanf("%d",&n);
    //input data ke dalam array
            for(i=1;i<=n;i++)    //ulangi untuk semua data hingga data ke-n
            {
            printf("Masukan Nilai Himpunan a[%d] : ",i);
            scanf("%d",&a[i]);
            }
           
    //input nilai r
            printf("Masukan 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\nTekan Enter untuk melihat hasil generate permutasi...\n",max);
   
    getche();//fungsi membaca karakter keyboard
    no=1;//variabel untuk menampilkan nomor
   
    //men-generate permutasi dengan
    //algoritma generate next-permutation
   
    //genere sabanyak 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 ; //j adalah subcript terbesar dengan aj
                       k=n;
                       while(a[j] > a[k])
                                  k=k-1 ; //ak adalah integer terkecil dan lebih besar dari aj
                                  
    //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;
}

Written by

We are Creative Blogger Theme Wavers which provides user friendly, effective and easy to use themes. Each support has free and providing HD support screen casting.

0 komentar:

Posting Komentar

 

© 2013 Raizexe Blog. All rights resevered. Designed by Templateism

Back To Top