Pages

Tuesday, January 6, 2015

Metode Brute Force dalam Bahasa Pemrograman C

Hallo bloggers, pernah dengan metode Brute Force? Jika belum dapat mencari di beberapa referensi yang dapat diakses dengan mudah oleh teman-teman. Bagi yang sudah tau, berikut ini saya akan bahas implementasi metode Brute Force dengan menggunakan bahasa pemrograman C.
Berikut adalah listing programnya.





































#include <stdio.h>
#include <conio.h>
#include <iostream.h>
·         Menggunakan library dasar pada bahasa C yang bertujuan agar dapat meggunakan fungsi Input output.

void prima(), bsort();
  • Pernyataan tersebut merupakan pendeklarasian method prima dan bsort yang tidak membalikan nilai dengan tipe void.

main()
{
   start:
   int x;
   clrscr();
   printf("\n\tAlgoritma Brute Force\n");
   printf("\n\t=======================");
   printf("\n\t1. Pencarian Bilangan Prima");
   printf("\n\t2. Sorting Bilangan");
   printf("\n\t3. Exit");
   printf("===========================");
   printf("\n\tMasukkan Pilihan (1-3) : ");
   scanf("%d",&x);
  • Mendeklarasikan variabel x dengan tipe data int kemudian membersihkan layar, lalu akan menampilkan output sesuai pada pernyataan printf lalu pada akhir listing di atas akan meminta memasukan pilihan yang di tamping pada variabel x

switch(x)
{
case 1:prima();
      goto start;
case 2:bsort();
       goto start;
case 3:return 0;
default:
      clrscr();
      printf("\n\n\n\n\n\n\t\t\tAnda Salah Memasukkan Input!");
      printf("\n\t\tProgram akan di restart setelah Anda menekan tombol Enter");
      getch();
      goto start;
}
·         Input dari tahapan sebelum ini adalah memasukan nilai untuk variabel x, lalu pada tahap ini variabel tadi akan memasuki proses percabangan menggunakan switch. Jika memasukan input 1 maka akan dijalankan method prima(), jika memilih 2 maka akan dijalankan methode bsort. Sedangkan 3 akan membalikan nilai 0 yang dimana tidak terjadi apa-apa. Jika terjadi kesalahan input maka akan menjakankan perintah-perintah pada bagian “default:” sampai “goto start”.

void prima()
{
      int bil,j;
   clrscr();
   printf("\t\t\tPencarian Bil;angan Prima\n\n");
   printf("Masukkan Data yang ingin diinput : ");
   scanf("%d",&bil);
   for(j=2;j<=bil;j++)
   {
      if((j%2>0)&&(j%3>0)&&(j%5>0)&(j%7>0)||(j==2)||(j==5)||(j==7))
      {
            printf("%i ",j);
      }
   }
   getch();
}
·         Pada method prima ini terdapat pendeklarasian variabel bil dan j dengan tipe data int, kemudian akan membersihkan layar.
·         Lalu akan dicontohkan untuk pecarian bilangan prima ini, saya masukan nilai = 15
·         Lalu akan dilakukan perulangan dari 2-15(angka yang saya input) menggunakan perulangan for pada bahasa C dan pada bagian dalam for terdapat percabangan if dengan kondisi jika j tidak habis di bagi 2, 3, 5, 7 atau j sama dengan 2, 5, 7 maka print nilai dari variabel j tersebut.
·         Perulangan 1 : j == 2
Maka akan diprint : “2 “, karena memenuhi kondisi j == 2.
·         Perulangan 2 : j == 3
Maka akan diprint : “3 “, karena memenuhi kondisi j == 3.
·         Perulangan 3 : j == 4
Tidak akan di print, karena 4%2==0. Sedangkan pada kondisi if harus > 0 dan pada kondisi && (DAN). Pada kondisi OR juga tidak sama dengan 2/5/7.
·         Perulangan 4 : j == 5
Maka akan diprint : “5 “, karena memenuhi kondisi j == 5.
·         Perulangan 5 : j == 6
Tidak akan di print, karena 6%3==0. Sedangkan pada kondisi if harus > 0 dan pada kondisi && (DAN). Pada kondisi OR juga tidak sama dengan 2/5/7.
·         Perulangan 6 : j == 7
Maka akan diprint : “7 “, karena memenuhi kondisi j == 7.
·         Perulangan 7 : j == 8
Tidak akan di print, karena 8%2==0. Sedangkan pada kondisi if harus > 0 dan pada kondisi && (DAN). Pada kondisi OR juga tidak sama dengan 2/5/7.
·         Perulangan 8 : j == 9
Tidak akan di print, karena 9%3==0. Sedangkan pada kondisi if harus > 0 dan pada kondisi && (DAN). Pada kondisi OR juga tidak sama dengan 2/5/7.
·         Perulangan 9 : j == 10
Tidak akan di print, karena 10%5==0. Sedangkan pada kondisi if harus > 0 dan pada kondisi && (DAN). Pada kondisi OR juga tidak sama dengan 2/5/7.
·         Perulangan 10 : j == 11
Maka akan diprint : “11 “, karena memenuhi kondisi (j%2>0) && (j%3>0) && (j%5>0) && (j%7>0)
·         Perulangan 11 : j == 12
Tidak akan di print, karena 12%2==0 dan 12%3==0. Sedangkan pada kondisi if harus > 0 dan pada kondisi && (DAN). Pada kondisi OR juga tidak sama dengan 2/5/7.
·         Perulangan 12 : j == 13
Maka akan diprint : “13 “, karena memenuhi kondisi (j%2>0) && (j%3>0) && (j%5>0) && (j%7>0)
·         Perulangan 13 : j == 14
Tidak akan di print, karena 14%2==0 dan 14%7==0. Sedangkan pada kondisi if harus > 0 dan pada kondisi && (DAN). Pada kondisi OR juga tidak sama dengan 2/5/7.
·         Perulangan 14 : j == 15
Tidak akan di print, karena 15%3==0 dan 15%5==0. Sedangkan pada kondisi if harus > 0 dan pada kondisi && (DAN). Pada kondisi OR juga tidak sama dengan 2/5/7.

Maka output dari contoh di atas adalah : “2 3 5 7 11 13 ”

void bsort()
{
   int i,j,temp,n,bil[100];
   clrscr();
   printf("\t\tSorting Bilangan\n\n\n");
   printf("Masukkan Jumlah Bilangan : ");
   scanf("%d",&n);
  • Pada bagian awal ketika menjalankan method bsort akan dilakukan input nilai bilangan untuk variabel n
  • Saya contohkan memasukan 3
   for(i=0;i<n;i++)
   {
      printf("Bilangan ke-%d\t : ",i+1);
      scanf("%d",&bil[i]);
   }
  • Nilai pada variabel n digunakan pada perulangan for dari 0 sampai kurang dari n, yang didalamnya adalah memasukan bilangan sebanyak n kali dan menyimpanya pada variabel aray bil dengan masing-masing indeks mengikuti nilai variabel i pada perulangan tersebut.
  • Nilai yang saya masukkan adalah 11, 5, 20






   printf("\n");
   for(i=0;i<i;i++)
   {
      for(j=n-1;j>i;j--)
      {
         if(bil[i]>bil[j])
         {
            temp=bil[i];
            bil[i]=bil[j];
            bil[j]=temp;
         }
      }
   }
  • Pada bagian ini akan dilakukan sorting bilangan-bilangan yang telah dimasukkan, dengan menggunakan perulangan pertama sebanyak jumlah bilangan yang di input. Sedangkan perulangan kedua dilakukan dari n(jumlah bilangan yang di input) sampai selama lebih besar dari i. lalu akan di cek bilangan indeks 1 apakah lebih besar dari bil indeks j. jika benar tukar bilangan dengan menggunakan variabel tambahan(temp).
  • Lakukan hal tersebut sampai perilangan berhenti.

   printf("Sorting : ");
   for(i=0;i<n;i++)
   {
      printf("%d",bil[i]);
      if(i!=n-1)
      {
         printf(",");
      }
   }
   getch();
}
  • Pada bagian ini hilangan yang telah di sorting akan di print menggunakan perulangan for. Terdapat percabangan if, jika i tidak sama dengan n – 1 maka akan di print “,”. Perulangan ini digunakan agar saat perulangan terakhir setelah mencetak bilangan tidak di akhiri dengan tanda koma(“,”).
Berikut ini adalah outputnya.
Menu Utama













Pencarian Bilangan Prima
 











Sorting Bilangan

1 comment: