









Dear Kanjeng Pembaca sekalian,… berikut ada soal dari mahasiswa yang mengirim wa sekitar pukul 00.40 WIB … karena seperti mengalami kesulitan … untuk memecahkan masalah …!!! Masalahnya adalah dimasukkan angka desimal n … dan juga angka digit ke-k, dan harus mengconvert angka desimal tersebut ke angka binary … dan menentukan angka dari digit yang dimasukkan …!!! Contoh soalnya adalah sbb :
Naaagh harus dipahami dulu … kalau angka desimal itu basisnya 10… jadi ada angka 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,… selanjutnya 10, 11, 12 etc …!!! Kalau angka bilangan biner basisnya itu 2 … jadi 0 dan 1 … jadi 0, 1, 10 (untuk angka 2), 11 (untuk angka 3), 100 (untuk angka 4) …!!! Naaagh dalam case diatas … bilangan 12 desimal itu akan diconvert menjadi 1100 (8 + 4 + 0 + 0) … !!! Naaagh digit ke 4 itu berarti dari kanan ke kiri… jadi digit ke-4 nya itu jatuh diangka 1 … sehingga outputnya menjadi 1 …!!!
Yang menarik adalah nggak boleh menggunakan loop, rekursif atau function … dalam artian gak boleh pake syntax for, gak boleh pake syntax while, ataupun fungsi didalam fungsi …!!! Yaaagh memang menjadi tambah ruweeet,,, namanya juga homework mahasiswa… jadi harus olah raga ‘senam otak’ nya … yang harus dilakukan …!!! Oke… kebetulan belum bisa tidur juga… jadi slow aja bikin coding nya … gak ngoyo.. ternyata kelar juga yaaagh sekitar 1 jam-an …!!!
So… akhirnya caranya adalah menggunakan syntax log2 dan pow (kuadrat) serta if then else … plus tambah syntax goto …!!! Kemudian dihitung… antara hasil dari log2 … dengan posisi yang digit yang diminta… jika sudah sesuai maka dicetak… apapun hasilnya apakah 1 atau 0 …!!! Kemudian dihitung juga kelipatannya… dan kalau lebih dilakukan reverse (ini model accounting yang diterapkan red.) …!!! Naaagh ini hasil programnya … monggo dicheck… kalau bingung pegangan …
#include <stdio.h>#include <math.h>int main(){int bilangan, posisi;int hasil;int sub_total = 0;scanf(“%d %d”, &bilangan, &posisi);hasil = log2 (bilangan);posisi = posisi – 1;atas://menghitung sub_total kelipatan pangkat 2 (menurun)sub_total = sub_total + pow(2,hasil);if (sub_total <= bilangan){//printf(“1”);if (posisi == hasil){printf(“1”);}}else{if (posisi == hasil){printf(“0”);}if (hasil > 0){// ini untuk mereverse sub_total ke kondisi semulasub_total = sub_total – pow(2, hasil);}}hasil = hasil – 1;if (hasil >= 0)goto atas;printf(“\n”);return 0;}
Leave a Reply