fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm> // Untuk std::reverse
  4.  
  5. // Fungsi untuk mengonversi bilangan desimal ke representasi biner string
  6. std::string desimalKeBiner(int angka) {
  7. if (angka == 0) {
  8. return "0";
  9. }
  10. std::string binerString = "";
  11. while (angka > 0) {
  12. binerString += (angka % 2 == 0 ? '0' : '1');
  13. angka /= 2;
  14. }
  15. std::reverse(binerString.begin(), binerString.end()); // Balikkan string
  16. return binerString;
  17. }
  18.  
  19. // Fungsi untuk menghitung jumlah nomor bit tertentu dalam bilangan biner
  20. int hitungNomorBit(int angka, int nomorBit) {
  21. if (nomorBit != 0 && nomorBit != 1) {
  22. // Mengembalikan 0 untuk kasus "null" seperti contoh, karena fungsi mengembalikan int
  23. // Dalam C++, tidak ada "null" untuk tipe int.
  24. // Jika perlu membedakan, bisa menggunakan std::optional<int> atau mengembalikan nilai khusus seperti -1.
  25. return 0;
  26. }
  27.  
  28. std::string binerRepresentasi = desimalKeBiner(angka);
  29. int jumlah = 0;
  30. char bitYangDicari = (nomorBit == 0 ? '0' : '1');
  31.  
  32. for (char bit : binerRepresentasi) {
  33. if (bit == bitYangDicari) {
  34. jumlah++;
  35. }
  36. }
  37. return jumlah;
  38. }
  39.  
  40. int main() {
  41. // Contoh dari soal
  42. // Representasi bilangan biner dari angka 13 adalah 1101
  43. std::cout << "hitungNomorBit(13, 0) -> " << hitungNomorBit(13, 0) << std::endl; // Diharapkan 1
  44. std::cout << "hitungNomorBit(13, 1) -> " << hitungNomorBit(13, 1) << std::endl; // Diharapkan 3
  45. std::cout << "hitungNomorBit(13, 2) -> " << hitungNomorBit(13, 2) << std::endl; // Diharapkan 0 (null)
  46.  
  47. // Contoh tambahan
  48. std::cout << "hitungNomorBit(7, 1) -> " << hitungNomorBit(7, 1) << std::endl; // 7 dalam biner adalah 111, diharapkan 3
  49. std::cout << "hitungNomorBit(10, 0) -> " << hitungNomorBit(10, 0) << std::endl; // 10 dalam biner adalah 1010, diharapkan 2
  50. std::cout << "hitungNomorBit(0, 0) -> " << hitungNomorBit(0, 0) << std::endl; // 0 dalam biner adalah 0, diharapkan 1
  51. std::cout << "hitungNomorBit(0, 1) -> " << hitungNomorBit(0, 1) << std::endl; // 0 dalam biner adalah 0, diharapkan 0
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
hitungNomorBit(13, 0) -> 1
hitungNomorBit(13, 1) -> 3
hitungNomorBit(13, 2) -> 0
hitungNomorBit(7, 1) -> 3
hitungNomorBit(10, 0) -> 2
hitungNomorBit(0, 0) -> 1
hitungNomorBit(0, 1) -> 0