Rabu, 02 Februari 2011

converter bilangan desimal menjadi hexadesimal

       Sebenarnya saya menulis ini sebagai buntut kekesalan saya ketika mengetahui tentang salah satu manipulator c++ yang dapat langsung serta dengan mudah, praktis, irit, hemat, cepat, efisien (de el el) mengkonversikan bilangan desimal menjadi bilangan hexadesimal. Sebelumnya, pada praktikum Pemrograman terstruktur modul 2, saya diminta untuk membuat konverter bilangan desimal ke hexadesimal. Saya pun membuatnya dengan cara tradisional yang bisa saya pikirkan saat itu yaitu dengan membagi
angka yang akan dikonversi dengan angka 16 kemudian mencari sisa pembagiannya.
beginilah program jadinya :

  1. //konversi desimal ke hexadesimal
  2. #include <iostream>
  3. using namespace std;

  4. int main ()
  5. {
  6.     char x[1000],bin[1000];
  7.     long long t,n,a,k,c;
  8.     cin>>t;
  9.     for(c=1; c<=t; c++)
  10.     {
  11.             long long i=0,j=0;
  12.             cin>>n;
  13.             while(n>0)
  14.             {
  15.                       a = n%16;
  16.                       n /= 16;
  17.                       switch(a) {
  18.                                 case 0 : x[i] = '0'; break;
  19.                                 case 1 : x[i] = '1'; break;
  20.                                 case 2 : x[i] = '2'; break;
  21.                                 case 3 : x[i] = '3'; break;
  22.                                 case 4 : x[i] = '4'; break;
  23.                                 case 5 : x[i] = '5'; break;
  24.                                 case 6 : x[i] = '6'; break;
  25.                                 case 7 : x[i] = '7'; break;
  26.                                 case 8 : x[i] = '8'; break;
  27.                                 case 9 : x[i] = '9'; break;
  28.                                 case 10 : x[i] = 'A'; break;
  29.                                 case 11 : x[i] = 'B'; break;
  30.                                 case 12 : x[i] = 'C'; break;
  31.                                 case 13 : x[i] = 'D'; break;
  32.                                 case 14 : x[i] = 'E'; break;
  33.                                 case 15 : x[i] = 'F'; break;
  34.                                 case 16 : x[i] = '1'; break;
  35.                                 }
  36.                                 i++;
  37.                                 }
  38.             for(int b=i-1; b>=0; b--)
  39.             {
  40.                     cout<<x[b]; }
  41.                     cout<<" ";
  42.             cout<<endl;
  43.             }
  44.             return 0;
  45.             }
code diatas cukup panjang memang, meskipun sebenarnya sangat sederhana dan mudah untuk dibuat. Namun code tersebut terasa sangat panjang serta terlalu rumit jika dibandingkan dengan cara yang baru saya ketahui tidak lama ini. Memang, cara ini ada sedikit kekurangan, yaitu kalau seharusnya huruf yang merepresentasikan angka 10 hingga 15 (A,B,C,D,E,F) merupakan huruf kapital, jika menggunakan cara ini huruf yang merepresentasikan angka 10 hingga 15 merupakan huruf kecil (a,b,c,d,e,f), tapi menurut saya hal ini tidak terlalu berpengaruh jika konverter hanya digunakan untuk keperluan pribadi (baca : tidak untuk di-submit ke online judge).
berikut source codenya :

  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. {
  5.     long long a;
  6.     cin>>a;
  7.     cout<<hex<<a;
  8.     return 0;
  9. }


simple kan??? bandingkan saja dengan source code pertama yang panjaaaang itu. hohoho. Semoga apa yang saya tulis ini bisa bermanfaat untuk menambah pengetahuan anda (untuk yang belum tau) ^^d.
Selamat pagiiii :))

1 komentar:

Silahkan tulis segala komentar, kritik, saran, pertanyaan atau apa aja lah, yang penting sopan. okeoke?