Dokumen ini berisi pembahasan masalah menentukan jumlah digit bilangan tiga digit menggunakan bahasa pemrograman C++ (CPP Programming). Bilangan ini harus diekstrak ke dalam ratusan, puluhan dan satuan. Untuk mengekstrak bilangan tiga digit ini, kita bisa menggunakan operator C++ modulo (%) dan operator C++ pembagian integer (/).
Anda bisa mengakses masalah ini di buku aslinya, yaitu
Liang. 2014. Introduction to Programming with C++ 3rd Edition. London: Pearson Education. https://www.pearson.com/en-us/subject-catalog/p/Liang-Companion-Website-for-Introduction-to-Programming-with-C-Access-to-Videonotes-3rd-Edition/P200000003422/978013338026
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
2.6. Jumlah Digit dalam Bilangan Ratusan Menggunakan C++
1. **2.6. (Sum the digits in an integer)
Write a program that reads an integer between 0 and 1000 and adds all the digits in
the integer. For example, if an integer is 932, the sum of all its digits is 14.
Hint: Use the % operator to extract digits, and use the / operator to remove the
extracted digit. For instance, 932 % 10 = 2 and 932 / 10 = 93.
Here is a sample run:
Enter a number between 0 and 1000: 999
The sum of the digits is 27
Untuk menjumlahkan digit-digit dalam bilangan dalam rentang 0 hingga 1000, kita bisa
harus mengekstrak bilangan ini ke dalam ratusan, puluhan dan satuan. Misal, bilangan 932 dapat
diekstrak menjadi 9 ratusan 3 puluhan dan 2 satuan. Untuk mengekstrak bilangan ini, kita bisa
menggunakan operasi pembagian integer dan operasi modulo (sisa pembagian). Misal, operasi
pembagian aritmatika 932 dengan 10 adalah sebagai berikut:
932 ÷ 10 = 93,2
Sementara, hasil pembagian integer antara 932 dengan 10 adalah sebagai berikut:
932 ÷ 10 = 93
Pada pembagian integer ini, bagian pecahan ini langsung dipotong begitu saja. Operasi modulo
adalah operasi untuk mendapatkan sisa pembagian dari dua operand. Operasi modulo ini
dilambangkan 𝑎 𝑚𝑜𝑑 𝑏 dimana a dan b adalah bilangan bulat. Misal, langkah-langkah melakukan
operasi 932 𝑚𝑜𝑑 10 adalah sebagai berikut:
2. Karena, 932 ÷ 10 = 93 sisa 2 sehingga 932 𝑚𝑜𝑑 10 = 2.
Pada kasus ini, kita bisa mengekstraksi bilangan 932 menggunakan operator modulo dan
pembagian integer dalam beberapa langkah berikut:
Langkah 1 : Satuan dari 932 didapat dari 932 𝑚𝑜𝑑 10 = 2 sehingga satuan dari 932 adalah 2.
Kemudian, bilangan 932 dioperasikan dengan pembagian integer dengan 10, 932 ÷
10 = 93, untuk diekstrasi sebagai puluhan pada langkah berikutnya.
Langkah 2 : Hasil operasi pembagian integer pada langkah 1 (yaitu, 93) digunakan untuk
mengekstrasi puluhan. Bilangan 93 ini dioperasikan modulo dengan 10,
sehingga 93 𝑚𝑜𝑑 10 = 3. Sehingga, puluhan dari 932 adalah 3. Kemudian, bilangan
93 ini dioperasikan integer dengan 10, 93 ÷ 10 = 9 untuk diekstrasi sebagai ratusan
pada langkah berikutnya.
Langkah 3 : Hasil operasi pembagian integer pada langkah 2 (yaitu, 9) digunakan untuk
mengekstaksi ratusan. Bilangan 9 ini dioperasikan modulo dengan 9,
sehingga 9 𝑚𝑜𝑑 10 = 9. Sehingga, ratusan dari 932 adalah 9.
Kemudian ratusan, puluhan dan satuan dari 932 ini dijumlahkan (9 + 3 + 2) menghasilkan 14.
Langkah-langkah menjumlahkan digit-digit bilangan dalam rentang 0 hingga 1000 ini dapat
diterjemahkan dalam baris kode C++ sebagai berikut:
1 #include <iostream>
2 using namespace std;
3
4 /*
5 =====================================================
6 02.06. Sum the digits in an integer
7 By : Putra
8 Lang : idn (Indonesia)
9 -----------------------------------------------------
10 Masalah :
11
12 Tuliskan program yang membaca bilangan mulai dari
13 0 hingga 1000. Kemudian, digit-digit bilangan ini
14 dijumlahkan. Misal, pengguna menginput bilangan
15 932 maka program akan menampilkan jumlah digit-
3. 16 digit bilangan ini ( 9 + 3 + 2 ), yaitu 14.
17
18 Petunjuk: Gunakan operator % untuk mengekstrak
19 digit-digit bilangan ini. Dan, gunakan operator /
20 untuk menghilangkan digit yang telah diekstrak.
21 Misal, 932 % 10 = 2 dan 932 / 10 = 93.
22
23 =====================================================
24 */
25
26 int main() {
27 cout << endl
28 <<"======================================================="
29 << endl
30 << endl
31 << "02.06. Sum the digits in an integer"
32 << endl
33 << endl
34 << "-------------------------------------------------------"
35 << endl;
36
37 // 1. Input bilangan integer dalam rentang 0 hingga 1000
38 cout << "Input bilangan antara 0 hingga 1000 (Misal, 932) : ";
39 // int non-negatif dengan rentang lebih pendek.
40 unsigned short bilangan;
41 cin >> bilangan;
42
43 // 2. Mengekstrak satuan bilangan ini
44 unsigned short satuan;
45 unsigned short sisaBilangan;
46 satuan = bilangan % 10;
47 sisaBilangan = bilangan / 10;
48
49 // 3. Mengekstrak puluhan bilangan
50 unsigned short puluhan;
51 puluhan = sisaBilangan % 10;
52 sisaBilangan = sisaBilangan / 10;
53
54 // 4. Mengekstrak ratusan bilangan
4. 55 unsigned short ratusan;
56 ratusan = sisaBilangan % 10;
57 sisaBilangan = sisaBilangan / 10;
58
59 // 5. Menampilkan jumlah digit
60 unsigned short jumlahDigit = ratusan + puluhan + satuan;
61 cout << "Anda menginput bilangan " << bilangan << endl;
62
63 cout << "Jadi, jumlah digit bilangan " << bilangan
64 << " adalah " << endl
65 << "(" << ratusan << " + " << puluhan << " + " << satuan << " )"
66 << endl
67 << " = " << jumlahDigit << ". "
68 << endl
69 << "======================================================="
70 << endl
71 << endl;
72
73 return 0;
74 }
Baris kode ini terdiri dari langkah-langkah berikut:
Langkah 1. Menerima input bilangan dalam rentang 0 hingga 1000
Pada langkah 1 ini, program menerima input bilangan integer yang ditampung dalam
variabel dengan nama bilangan seperti yang ditunjukkan pada baris kode ke-40 berikut:
37 // 1. Input bilangan integer dalam rentang 0 hingga 1000
38 cout << "Input bilangan antara 0 hingga 1000 (Misal, 932) : ";
39 // int non-negatif dengan rentang lebih pendek.
40 unsigned short bilangan;
41 cin >> bilangan;
Variabel bilangan ini diberikan tipe data unsigned short agar lebih efisien daripada menggunakan
int. Karena ruang yang digunakan untuk menyimpan variabel unsigned short hanya 16 bit
dibandingkan int sebesar 32 bit. Selain itu, variabel bilangan ini hanya menerima input dalam
5. rentang 0 hingga 1000 saja. Artinya, rentang ini masih jauh dari rentang maksimum yang dapat
disimpan oleh tipe data unsigned short, yaitu antara 0 hingga 216
– 1 (0 hingga 65.535).
Langkah 2. Mengekstraksi satuan dari bilangan ini.
Untuk mengekstraksi satuan dari nilai yang tersimpan dalam variabel bilangan, baris kode
yang digunakan adalah:
43 // 2. Mengekstrak satuan bilangan ini
44 unsigned short satuan;
45 unsigned short sisaBilangan;
46 satuan = bilangan % 10;
47 sisaBilangan = bilangan / 10;
Hasil ekstraksi angka satuan dalam variabel bilangan disimpan dalam variabel dengan nama
satuan.
44 unsigned short satuan;
Variabel satuan ini digunakan untuk menyimpan hasil operasi modulo (%) antara nilai yang
tersimpan dalam variabel bilangan dengan 10. Variabel dengan nama satuan ini menyimpan nilai
hasil ekstraksi angka satuan dari nilai yang tersimpan dalam variabel bilangan.
46 satuan = bilangan % 10;
Variabel dengan nama sisaBilangan ini sengaja didefinisikan untuk menampung hasil pembagian
integer antara nilai yang tersimpan dalam variabel bilangan dengan 10. Nilai dalam variabel ini
akan terus berubah pada langkah-langkah berikutnya.
45 unsigned short sisaBilangan;
47 sisaBilangan = bilangan / 10;
6. Langkah 3. Mengekstraksi puluhan dari bilangan ini.
Untuk mengekstraksi puluhan dari nilai yang tersimpan dalam variabel bilangan, baris kode
yang digunakan adalah:
49 // 3. Mengekstrak puluhan bilangan
50 unsigned short puluhan;
51 puluhan = sisaBilangan % 10;
52 sisaBilangan = sisaBilangan / 10;
Hasil ekstraksi angka puluhan dalam variabel bilangan disimpan dalam variabel dengan nama
puluhan.
50 unsigned short puluhan;
Variabel puluhan ini digunakan untuk menyimpan hasil operasi modulo (%) antara nilai yang
tersimpan dalam variabel sisaBilangan dengan 10. Variabel dengan nama puluhan ini menyimpan
nilai hasil ekstraksi angka puluhan dari nilai yang tersimpan dalam variabel sisaBilangan.
51 puluhan = sisaBilangan % 10;
Kemudian, nilai variabel sisaBilangan diubah dengan mengoperasikan pembagian integer nilai
dalam sisaBilangan sebelumnya dengan bilangan 10.
52 sisaBilangan = sisaBilangan / 10;
Padahal, operasi ini bisa dituliskan dengan division assignment operation seperti ini:
sisaBilangan /= 10;
bukan?
7. Langkah 4. Mengekstraksi ratusan dari bilangan ini.
Untuk mengekstraksi ratusan dari nilai yang tersimpan dalam variabel bilangan, baris kode
yang digunakan adalah:
54 // 4. Mengekstrak ratusan bilangan
55 unsigned short ratusan;
56 ratusan = sisaBilangan % 10;
57 sisaBilangan = sisaBilangan / 10;
Hasil ekstraksi angka ratusan dalam variabel bilangan disimpan dalam variabel dengan nama
ratusan.
55 unsigned short ratusan;
Variabel ratusan ini digunakan untuk menyimpan hasil operasi modulo (%) antara nilai yang
tersimpan dalam variabel sisaBilangan dengan 10. Variabel dengan nama ratusan ini menyimpan
nilai hasil ekstraksi angka ratusan dari nilai yang tersimpan dalam variabel sisaBilangan.
56 ratusan = sisaBilangan % 10;
Kemudian, nilai variabel sisaBilangan diubah dengan mengoperasikan pembagian integer nilai
dalam sisaBilangan sebelumnya dengan bilangan 10.
57 sisaBilangan = sisaBilangan / 10;
Padahal, operasi ini bisa dituliskan dengan division assignment operation seperti ini:
sisaBilangan /= 10;
bukan?
8. Langkah 5. Menampilkan jumlah digit-digit dari bilangan ini.
Setelah digit ratusan, puluhan dan satuan diekstaksi, ketiga digit ini dijumlahkan dan
hasilnya disimpan dalam variabel jumlahDigit.
59 // 5. Menampilkan jumlah digit
60 unsigned short jumlahDigit = ratusan + puluhan + satuan;
Setelah baris kode ini dikompilasi, program ini bisa dijalankan. Jika pengguna menginput
nilai 932 (terdiri dari 3 digit), maka output yang ditampilkan oleh program adalah sebagai berikut:
Jika pengguna menginput nilai 35 (terdiri dari 2 digit saja) maka output yang dihasilkan adalah
sebagai berikut:
9. Jika pengguna menginput bilangan 9 (hanya terdiri dari 1 digit saja) maka output yang dihasilkan
adalah sebagai berikut:
10. Fitur pengembangan dari program ini berikutnya adalah perlu adanya pengecekan input yang
dilakukan oleh pengguna. Pengecekan ini digunakan untuk menampilkan pesan error ketika
pengguna menginput bilangan integer di luar rentang 0 hingga 1000, menginput bilangan selain
integer atau menginput nilai yang bukan bilangan. Pengecekan ini menggunakan operator
percabangan (if … then …). Fitur pengembangan selanjutnya adalah menawarkan pengguna untuk
menginput nilai atau tidak menggunakan operator percabangan (if … then …) dan perulangan
while loop atau for loop.
Sumber Rujukan:
Liang. 2014. Introduction to Programming with C++ 3rd Edition. London: Pearson Education.
https://www.pearson.com/en-us/subject-catalog/p/Liang-Companion-Website-for-
Introduction-to-Programming-with-C-Access-to-Videonotes-3rd-
Edition/P200000003422/978013338026