03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 1
Programming Exercise 03.07
Sort Three Integers
3.7. (Sort three integers)
Write a program that prompts the user to enter three integers and display the integers
in non-decreasing order.
Here is a sample run:
03.07.01. Identifikasi Masalah
Masalah yang akan diselesaikan adalah menampilkan 3 bilangan integer mulai dari
terkecil hingga terbesar. Ketiga integer ini diinput oleh pengguna
03.07.02.Menyelesaikan Masalah
Langkah pertama untuk menyelesaikan masalah ini adalah menerima input bilangan
integer. Ketiga bilangan ini disimpan dalam variabel bilangan1, bilangan2 dan
bilangan3.
Gambar 03.07.01. Diagram Alir Mengurutkan Bilangan Integer Bagian 1
Input variabel:
bilangan1
bilangan2
bilangan3
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 2
Gambar 03.07.02. Diagram Alir Mengurutkan Bilangan Integer Bagian 2
Urutan dari kecil ke besar
bilangan1, bilangan3 dan
bilangan2.
False
Urutan dari kecil ke besar
bilangan1, bilangan2 dan
bilangan3.
True
Tampilkan:
bilangan1,
bilangan2,
bilangan3
False
True Tampilkan:
bilangan1,
bilangan3,
bilangan2
Urutan dari kecil ke besar
bilangan2, bilangan1 dan
bilangan3.
False
True
Tampilkan:
bilangan2,
bilangan1,
bilangan3
Urutan dari kecil ke besar
bilangan2, bilangan3 dan
bilangan1.
False
True
Tampilkan:
bilangan2,
bilangan3,
bilangan1
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 3
Gambar 03.07.03. Diagram Alir Mengurutkan Bilangan Integer Bagian 3
Urutan dari kecil ke besar
bilangan3, bilangan2 dan
bilangan1.
False
True Tampilkan:
bilangan3,
bilangan2,
bilangan1
Urutan dari kecil ke besar
bilangan3, bilangan1 dan
bilangan2.
False
True Tampilkan:
bilangan3,
bilangan1,
bilangan2
bilangan1 == bilangan2
bilangan1 < bilangan3
False
True
Tampilkan:
bilangan1,
bilangan2,
bilangan3
bilangan1 == bilangan2
bilangan1 > bilangan3
False
True
Tampilkan:
Bilangan3,
Bilangan2,
bilangan1
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 4
Gambar 03.07.04. Diagram Alir Mengurutkan Bilangan Integer Bagian 4
bilangan1 == bilangan3
bilangan1 < bilangan2
False
True
Tampilkan:
bilangan1,
bilangan3,
bilangan2
bilangan1 == bilangan3
bilangan1 > bilangan2
False
True
Tampilkan:
bilangan2,
bilangan1,
bilangan3
bilangan2 == bilangan3
bilangan2 < bilangan1
False
True
Tampilkan:
bilangan2,
bilangan3,
bilangan1
Tampilkan:
bilangan1,
bilangan2,
bilangan3
bilangan2 == bilangan3
bilangan2 > bilangan1
False
True
Tampilkan:
bilangan1,
bilangan2,
bilangan3
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 5
Kemudian, 13 kemungkinan pengurutan nilai dalam variabel bilangan1, bilangan2
dan bilangan3 dievaluasi dan hasilnya ditampilkan di dalam console. Keenam kemungkinan
pertama nilai dalam variabel bilangan1, bilangan2 dan bilangan3 berbeda seperti yang
ditunjukkan oleh gambar 03.07.02 dan 03.07.03. Sementara pada pengecekan selanjutnya, nilai
bilangan1, bilangan2 dan bilangan3 bisa jadi sama, entah sepasang sama atau ketiganya
sama.
03.07.03. Mengajukan Solusi
Baris kode lengkap program mengurutkan bilangan tidak dimulai dari terbesar ke
terkecil adalah sebagai berikut:
1 #include <iostream>
2
3 /*
4 ==============================================================
5 03.07. Sort Three Integers
6 by : #bayuyudhasaputra
7 lang : IDN (Bahasa Indonesia)
8 --------------------------------------------------------------
9 Masalah :
10 Write a program that prompts the user to enter
11 three integers and display the integers in non-decreasing order.
12
13 ===============================================================
14 */
15
16 int main()
17 {
18 // 1. Input tiga bilangan
19 int bilangan1, bilangan2, bilangan3;
20 std::cout << "Input bilangan bulat pertama : ";
21 std::cin >> bilangan1;
22 std::cout << std::endl;
23
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 6
24 std::cout << "Input bilangan bulat kedua : ";
25 std::cin >> bilangan2;
26 std::cout << std::endl;
27
28 std::cout << "Input bilangan bulat ketiga : ";
29 std::cin >> bilangan3;
30 std::cout << std::endl;
31
32 // 2. Cek input dan tampilkan hasilnya
33 std::cout << "Urutan bilangan yang tepat adalah: ";
34 if ((bilangan1 < bilangan2) &&
35 (bilangan2 < bilangan3))
36 {
37 /* Pilihan 1:
38 bil1 < bil2 < bil3 */
39 std::cout << bilangan1 << ", "
40 << bilangan2 << ", dan "
41 << bilangan3 << "."
42 << std::endl;
43
44 }
45 else if ((bilangan1 < bilangan3) &&
46 (bilangan3 < bilangan2))
47 {
48 /* Pilihan 2:
49 bil1 < bil3 < bil2 */
50 std::cout << bilangan1 << ", "
51 << bilangan2 << ", dan "
52 << bilangan3 << "."
53 << std::endl;
54
55 }
56 else if ((bilangan2 < bilangan1) &&
57 (bilangan1 < bilangan3))
58 {
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 7
59 /* Pilihan 3:
60 bil2 < bil1 < bil3 */
61 std::cout << bilangan2 << ", "
62 << bilangan1 << ", dan "
63 << bilangan3 << "."
64 << std::endl;
65
66 }
67 else if((bilangan2 < bilangan3) &&
68 (bilangan3 < bilangan1))
69 {
70 /* Pilihan 4:
71 bil2 < bil3 < bil1 */
72 std::cout << bilangan2 << ", "
73 << bilangan3 << ", dan "
74 << bilangan1 << "."
75 << std::endl;
76
77 }
78 else if((bilangan3 < bilangan1) &&
79 (bilangan1 < bilangan2))
80 {
81 /* Pilihan 5:
82 bil3 < bil1 < bil2 */
83 std::cout << bilangan3 << ", "
84 << bilangan1 << ", dan "
85 << bilangan2 << "."
86 << std::endl;
87
88 }
89 else if((bilangan3 < bilangan2) &&
90 (bilangan2 < bilangan1))
91 {
92 /* Pilihan 6:
93 bil3 < bil2 < bil1 */
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 8
94 std::cout << bilangan3 << ", "
95 << bilangan2 << ", dan "
96 << bilangan1 << "."
97 << std::endl;
98
99 }
100 else if((bilangan1 == bilangan2) &&
101 (bilangan1 < bilangan3))
102 {
103 /* Pilihan 7:
104 jika bil1 = bil2 dan bil1 < bil3
105 maka bil2 < bil3 */
106 std::cout << bilangan1 << ", "
107 << bilangan2 << ", dan "
108 << bilangan3 << "."
109 << std::endl;
110
111 }
112 else if((bilangan1 == bilangan2) &&
113 (bilangan1 > bilangan3))
114 {
115 /* Pilihan 8:
116 Jika bila1 = bil2 dan bil1 > bil3
117 maka bil2 > bil3 */
118 std::cout << bilangan3 << ", "
119 << bilangan2 << ", dan "
120 << bilangan1 << "."
121 << std::endl;
122 }
123 else if((bilangan1 == bilangan3) &&
124 (bilangan1 < bilangan2))
125 {
126 /* Pilihan 9:
127 Jika bil1 = bil3 dan bil1 < bil2
128 maka bil3 < bil2 */
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 9
129 std::cout << bilangan1 << ", "
130 << bilangan3 << ", dan "
131 << bilangan2 << "."
132 << std::endl;
133 }
134 else if((bilangan1 == bilangan3) &&
135 (bilangan1 > bilangan2))
136 {
137 /* Pilihan 10:
138 Jika bil1 = bil3 dan bil1 > bil2
139 maka bil3 > bil2 */
140 std::cout << bilangan2 << ", "
141 << bilangan1 << ", dan "
142 << bilangan3 << "."
143 << std::endl;
144 }
145 else if((bilangan2 == bilangan3) &&
146 (bilangan2 < bilangan1))
147 {
148 /* Pilihan 11:
149 Jika bil2 = bil3 dan bil2 < bil1
150 maka bil3 < bil1 */
151 std::cout << bilangan2 << ", "
152 << bilangan3 << ", dan "
153 << bilangan1 << "."
154 << std::endl;
155 }
156 else
157 {
158 std::cout << bilangan1 << ", "
159 << bilangan2 << ", dan "
160 << bilangan3 << "."
161 << std::endl;
162 }
163
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 10
164 return 0;
165 }
166
Pada langkah pertama pada baris ke-19 hingga 30, program meminta input kepada
pengguna. Hasil input ini disimpan dalam variabel bilangan1, bilangan2 dan bilangan3.
Ketiga variabel ini bertipe data int.
19 int bilangan1, bilangan2, bilangan3;
20 std::cout << "Input bilangan bulat pertama : ";
21 std::cin >> bilangan1;
22 std::cout << std::endl;
23
24 std::cout << "Input bilangan bulat kedua : ";
25 std::cin >> bilangan2;
26 std::cout << std::endl;
27
28 std::cout << "Input bilangan bulat ketiga : ";
29 std::cin >> bilangan3;
30 std::cout << std::endl;
Langkah kedua adalah mengecek, membandingkan dan menampilkan nilai-nilai
variabel ini. Pernyataan percabangan ini terdiri dari 13 kemungkinan. Kemungkinan pertama
pada baris ke-34 hingga 44, program akan menampilkan nilai variabel dengan urutan
bilangan1, bilangan2 dan bilangan3 ketika pernyataan (bilangan1 < bilangan2) &&
(bilangan2 < bilangan3) bernilai true. Nilai ini setara dengan bilangan1 < bilangan2
< bilangan3.
34 if ((bilangan1 < bilangan2) &&
35 (bilangan2 < bilangan3))
36 {
37 /* Pilihan 1:
38 bil1 < bil2 < bil3 */
39 std::cout << bilangan1 << ", "
40 << bilangan2 << ", dan "
41 << bilangan3 << "."
42 << std::endl;
43
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 11
44 }
Kemungkinan kedua pada baris ke-45 hingga 55 menampilkan nilai variabel dengan
urutan bilangan1, bilangan3 dan bilangan2 ketika pernyataan (bilangan1 <
bilangan3) && (bilangan3 < bilangan2) bernilai true. Pernyataan ini sama dengan
pernyataan matematis bilangan1 < bilangan3 < bilangan2.
45 else if ((bilangan1 < bilangan3) &&
46 (bilangan3 < bilangan2))
47 {
48 /* Pilihan 2:
49 bil1 < bil3 < bil2 */
50 std::cout << bilangan1 << ", "
51 << bilangan3 << ", dan "
52 << bilangan2 << "."
53 << std::endl;
54
55 }
Kemungkinan ketiga pada baris ke-56 hingga 66 adalah mengecek nilai dari pernyataan
(bilangan2 < bilangan1) && (bilangan1 < bilangan3). Pernyataan ini senilai dengan
pernyataan matematis bilangan2 < bilangan1 < bilangan3. Jika pernyataan ini bernilai
true maka program akan menampilkan urutan nilai dari variabel berikut bilangan2,
bilangan1 dan bilangan3.
56 else if ((bilangan2 < bilangan1) &&
57 (bilangan1 < bilangan3))
58 {
59 /* Pilihan 3:
60 bil2 < bil1 < bil3 */
61 std::cout << bilangan2 << ", "
62 << bilangan1 << ", dan "
63 << bilangan3 << "."
64 << std::endl;
65
66 }
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 12
Kemungkinan keempat adalah mengecek pernyataan (bilangan2 < bilangan3) &&
(bilangan3 < bilangan1). Pernyataan ini senilai dengan pernyataan matematis bilangan2
< bilangan3 < bilangan1. Jika pernyataan ini bernilai true maka program akan
menampilkan ururtan nilai dari variabel bilangan2, bilangan3, dan bilangan1.
67 else if((bilangan2 < bilangan3) &&
68 (bilangan3 < bilangan1))
69 {
70 /* Pilihan 4:
71 bil2 < bil3 < bil1 */
72 std::cout << bilangan2 << ", "
73 << bilangan3 << ", dan "
74 << bilangan1 << "."
75 << std::endl;
76
77 }
Kemungkinan kelima adalah mengecek nilai dari (bilangan3 < bilangan1) &&
(bilangan1 < bilangan2). Pernyataan ini senilai dengan pernyataan matematis bilangan3
< bilangan1 < bilangan2. Jika nilai ini bernilai true maka program akan menampilkan
nilai dalam variabel bilangan3, bilangan1, dan bilangan2 secara berurutan.
78 else if((bilangan3 < bilangan1) &&
79 (bilangan1 < bilangan2))
80 {
81 /* Pilihan 5:
82 bil3 < bil1 < bil2 */
83 std::cout << bilangan3 << ", "
84 << bilangan1 << ", dan "
85 << bilangan2 << "."
86 << std::endl;
87
88 }
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 13
Kemungkinan keenam adalah mengecek nilai dari pernyataan (bilangan3 <
bilangan2) && (bilangan2 < bilangan1). Pernyataan ini setara dengan pernyataan
matematis bilangan3 < bilangan2 < bilangan1. Jika pernyataan ini bernilai true maka
program akan menampilkan nilai dari variabel bilangan3, bilangan2 dan bilangan1
secara berurutan.
89 else if((bilangan3 < bilangan2) &&
90 (bilangan2 < bilangan1))
91 {
92 /* Pilihan 6:
93 bil3 < bil2 < bil1 */
94 std::cout << bilangan3 << ", "
95 << bilangan2 << ", dan "
96 << bilangan1 << "."
97 << std::endl;
98
99 }
Kemungkinan ketujuh adalah mengecek nilai dari pernyataan (bilangan1 ==
bilangan2) && (bilangan1 < bilangan3). Nilai ini setara dengan nilai pernyataan
matematis bilangan1 = bilangan2 tetapi bilangan1 < bilangan3. Akibatnya, nilai
dalam variabel bilangan2 juga kurang dari bilangan3. Jika pernyataan ini bernilai true
maka program akan menampilkan nilai dari variabel bilangan1, bilangan2 dan bilangan3
secara berurutan.
100 else if((bilangan1 == bilangan2) &&
101 (bilangan1 < bilangan3))
102 {
103 /* Pilihan 7:
104 jika bil1 = bil2 dan bil1 < bil3
105 maka bil2 < bil3 */
106 std::cout << bilangan1 << ", "
107 << bilangan2 << ", dan "
108 << bilangan3 << "."
109 << std::endl;
110
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 14
111 }
Kemungkinan kedelapan adalah mengecek nilai dari pernyataan (bilangan1 ==
bilangan2) && (bilangan1 > bilangan3). Pernyataan ini setara dengan pernyataan
matematis bilangan1 = bilangan2 dan bilangan1 > bilangan3. Akibatnya, nilai
dalam variabel bilangan2 juga lebih dari bilangan3. Jika pernyataan ini bernilai true maka
program akan menampilkan nilai dari variabel bilangan3, bilangan2 dan bilangan1
secara berurutan.
112 else if((bilangan1 == bilangan2) &&
113 (bilangan1 > bilangan3))
114 {
115 /* Pilihan 8:
116 Jika bila1 = bil2 dan bil1 > bil3
117 maka bil2 > bil3 */
118 std::cout << bilangan3 << ", "
119 << bilangan2 << ", dan "
120 << bilangan1 << "."
121 << std::endl;
122 }
Kemungkinan kesembilan adalah mengecek nilai dari pernyataan (bilangan1 ==
bilangan3) && (bilangan1 < bilangan2). Pernyataan ini setara dengan pernyataan
matematis bilangan1 = bilangan3 dan bilangan1 < bilangan2. Akibatnya, nilai
dalam variabel bilangan3 < bilangan2 juga.
123 else if((bilangan1 == bilangan3) &&
124 (bilangan1 < bilangan2))
125 {
126 /* Pilihan 9:
127 Jika bil1 = bil3 dan bil1 < bil2
128 maka bil3 < bil2 */
129 std::cout << bilangan1 << ", "
130 << bilangan3 << ", dan "
131 << bilangan2 << "."
132 << std::endl;
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 15
133 }
Kemungkinan kesepuluh adalah mengecek nilai dari pernyataan (bilangan1 ==
bilangan3) && (bilangan1 > bilangan2). Pernyataan ini setara dengan nilai dari
pernyataan matematis bilangan1 = bilangan3 dan bilangan1 > bilangan2.
Akibatnya, nilai dari variabel bilangan3 > bilangan2 juga. Jika pernyataan ini bernilai
true maka program akan menampilkan nilai dari variabel bilangan2, bilangan1 dan
bilangan3 secara berurutan.
134 else if((bilangan1 == bilangan3) &&
135 (bilangan1 > bilangan2))
136 {
137 /* Pilihan 10:
138 Jika bil1 = bil3 dan bil1 > bil2
139 maka bil3 > bil2 */
140 std::cout << bilangan2 << ", "
141 << bilangan1 << ", dan "
142 << bilangan3 << "."
143 << std::endl;
144 }
Kemungkinan kesebelas adalah mengecek nilai dari pernyataan (bilangan2 ==
bilangan3) && (bilangan2 < bilangan1). Pernyataan ini setara dengan pernyataan
matematis bilangan2 = bilangan3 dan bilangan2 < bilangan1. Akibatnya, nilai dari
variabel bilangan2 < bilangan1 juga.
145 else if((bilangan2 == bilangan3) &&
146 (bilangan2 < bilangan1))
147 {
148 /* Pilihan 11:
149 Jika bil2 = bil3 dan bil2 < bil1
150 maka bil3 < bil1 */
151 std::cout << bilangan2 << ", "
152 << bilangan3 << ", dan "
153 << bilangan1 << "."
154 << std::endl;
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 16
155 }
Jika semua persyaratan mulai dari kemungkinan pertama hingga kesebelas tidak
terpenuhi, maka nilai dalam variabel bilangan1 = bilangan2 = bilangan3. Sehingga,
program akan menampilkan nilai variabel dengan urutan bilangan1, bilangan2, dan
bilangan3.
156 else
157 {
158 std::cout << bilangan1 << ", "
159 << bilangan2 << ", dan "
160 << bilangan3 << "."
161 << std::endl;
162 }
Gambar 03.07.02 berikut ini adalah contoh output program dengan nilai variabel
bilangan1, bilangan2 dan bilangan3 yang berbeda. Output yang dihasilkan adalah urutan
dari bilangan terkecil hingga terbesar.
Gambar 03.07.02. Contoh Output Program Dengan Nilai Yang Berbeda
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 17
Gambar 03.07.03 adalah contoh output program dengan nilai variabel bilangan1 dan
bilangan3 yang sama sementara nilai variabel bilangan2 berbeda. Program akan
mengurutkan nilai variabel dari terkecil hingga terbesar.
Gambar 03.07.03. Contoh Output Program Ketika Diinput Dua Nilai Yang Sama
Gambar 03.07.04 berikut ini menampilkan program dengan nilai dalam variabel
bilangan1, bilangan2 dan bilangan3 yang sama. Program akan menampilkan output
program berikut:
Gambar 03.07.04. Contoh Output Program Ketika Diinput Tiga Nilai Yang Sama
03.07.SortThreeIntegers #bayuyudhasaputra
Halaman 18
03.07.04. Refleksi
Program ini dapat diperbaiki dengan menambahkan beberapa hal berikut:
1. Mengecek input dari pengguna untuk memastikan nilai yang diinput adalah bilangan
bukan tipe data lain.
2. Mengecek input apakah mempunyai nilai atau tidak.
3. Menawarkan kembali input kepada pengguna setelah proses sudah dilakukan, baik ketika
program memunculkan pesan error atau ketika program menampilkan output yang sesuai.
03.07.05. Daftar Rujukan
Liang. 2014. Introduction to Programming with C++ 3rd Edition. London: Pearson Education
yang bisa diakses pada tautan berikut:
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
Baris kode ini bisa diakses pada tautan berikut:
https://github.com/bayuYudhaSaputra/introduction-programming-CPP-
liang/blob/main/03.07.SortThreeIntegers.cpp

03.07. Mengurutkan Integer Menggunakan Bahasa Pemrograman C++

  • 1.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 1 ProgrammingExercise 03.07 Sort Three Integers 3.7. (Sort three integers) Write a program that prompts the user to enter three integers and display the integers in non-decreasing order. Here is a sample run: 03.07.01. Identifikasi Masalah Masalah yang akan diselesaikan adalah menampilkan 3 bilangan integer mulai dari terkecil hingga terbesar. Ketiga integer ini diinput oleh pengguna 03.07.02.Menyelesaikan Masalah Langkah pertama untuk menyelesaikan masalah ini adalah menerima input bilangan integer. Ketiga bilangan ini disimpan dalam variabel bilangan1, bilangan2 dan bilangan3. Gambar 03.07.01. Diagram Alir Mengurutkan Bilangan Integer Bagian 1 Input variabel: bilangan1 bilangan2 bilangan3
  • 2.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 2 Gambar03.07.02. Diagram Alir Mengurutkan Bilangan Integer Bagian 2 Urutan dari kecil ke besar bilangan1, bilangan3 dan bilangan2. False Urutan dari kecil ke besar bilangan1, bilangan2 dan bilangan3. True Tampilkan: bilangan1, bilangan2, bilangan3 False True Tampilkan: bilangan1, bilangan3, bilangan2 Urutan dari kecil ke besar bilangan2, bilangan1 dan bilangan3. False True Tampilkan: bilangan2, bilangan1, bilangan3 Urutan dari kecil ke besar bilangan2, bilangan3 dan bilangan1. False True Tampilkan: bilangan2, bilangan3, bilangan1
  • 3.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 3 Gambar03.07.03. Diagram Alir Mengurutkan Bilangan Integer Bagian 3 Urutan dari kecil ke besar bilangan3, bilangan2 dan bilangan1. False True Tampilkan: bilangan3, bilangan2, bilangan1 Urutan dari kecil ke besar bilangan3, bilangan1 dan bilangan2. False True Tampilkan: bilangan3, bilangan1, bilangan2 bilangan1 == bilangan2 bilangan1 < bilangan3 False True Tampilkan: bilangan1, bilangan2, bilangan3 bilangan1 == bilangan2 bilangan1 > bilangan3 False True Tampilkan: Bilangan3, Bilangan2, bilangan1
  • 4.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 4 Gambar03.07.04. Diagram Alir Mengurutkan Bilangan Integer Bagian 4 bilangan1 == bilangan3 bilangan1 < bilangan2 False True Tampilkan: bilangan1, bilangan3, bilangan2 bilangan1 == bilangan3 bilangan1 > bilangan2 False True Tampilkan: bilangan2, bilangan1, bilangan3 bilangan2 == bilangan3 bilangan2 < bilangan1 False True Tampilkan: bilangan2, bilangan3, bilangan1 Tampilkan: bilangan1, bilangan2, bilangan3 bilangan2 == bilangan3 bilangan2 > bilangan1 False True Tampilkan: bilangan1, bilangan2, bilangan3
  • 5.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 5 Kemudian,13 kemungkinan pengurutan nilai dalam variabel bilangan1, bilangan2 dan bilangan3 dievaluasi dan hasilnya ditampilkan di dalam console. Keenam kemungkinan pertama nilai dalam variabel bilangan1, bilangan2 dan bilangan3 berbeda seperti yang ditunjukkan oleh gambar 03.07.02 dan 03.07.03. Sementara pada pengecekan selanjutnya, nilai bilangan1, bilangan2 dan bilangan3 bisa jadi sama, entah sepasang sama atau ketiganya sama. 03.07.03. Mengajukan Solusi Baris kode lengkap program mengurutkan bilangan tidak dimulai dari terbesar ke terkecil adalah sebagai berikut: 1 #include <iostream> 2 3 /* 4 ============================================================== 5 03.07. Sort Three Integers 6 by : #bayuyudhasaputra 7 lang : IDN (Bahasa Indonesia) 8 -------------------------------------------------------------- 9 Masalah : 10 Write a program that prompts the user to enter 11 three integers and display the integers in non-decreasing order. 12 13 =============================================================== 14 */ 15 16 int main() 17 { 18 // 1. Input tiga bilangan 19 int bilangan1, bilangan2, bilangan3; 20 std::cout << "Input bilangan bulat pertama : "; 21 std::cin >> bilangan1; 22 std::cout << std::endl; 23
  • 6.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 6 24std::cout << "Input bilangan bulat kedua : "; 25 std::cin >> bilangan2; 26 std::cout << std::endl; 27 28 std::cout << "Input bilangan bulat ketiga : "; 29 std::cin >> bilangan3; 30 std::cout << std::endl; 31 32 // 2. Cek input dan tampilkan hasilnya 33 std::cout << "Urutan bilangan yang tepat adalah: "; 34 if ((bilangan1 < bilangan2) && 35 (bilangan2 < bilangan3)) 36 { 37 /* Pilihan 1: 38 bil1 < bil2 < bil3 */ 39 std::cout << bilangan1 << ", " 40 << bilangan2 << ", dan " 41 << bilangan3 << "." 42 << std::endl; 43 44 } 45 else if ((bilangan1 < bilangan3) && 46 (bilangan3 < bilangan2)) 47 { 48 /* Pilihan 2: 49 bil1 < bil3 < bil2 */ 50 std::cout << bilangan1 << ", " 51 << bilangan2 << ", dan " 52 << bilangan3 << "." 53 << std::endl; 54 55 } 56 else if ((bilangan2 < bilangan1) && 57 (bilangan1 < bilangan3)) 58 {
  • 7.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 7 59/* Pilihan 3: 60 bil2 < bil1 < bil3 */ 61 std::cout << bilangan2 << ", " 62 << bilangan1 << ", dan " 63 << bilangan3 << "." 64 << std::endl; 65 66 } 67 else if((bilangan2 < bilangan3) && 68 (bilangan3 < bilangan1)) 69 { 70 /* Pilihan 4: 71 bil2 < bil3 < bil1 */ 72 std::cout << bilangan2 << ", " 73 << bilangan3 << ", dan " 74 << bilangan1 << "." 75 << std::endl; 76 77 } 78 else if((bilangan3 < bilangan1) && 79 (bilangan1 < bilangan2)) 80 { 81 /* Pilihan 5: 82 bil3 < bil1 < bil2 */ 83 std::cout << bilangan3 << ", " 84 << bilangan1 << ", dan " 85 << bilangan2 << "." 86 << std::endl; 87 88 } 89 else if((bilangan3 < bilangan2) && 90 (bilangan2 < bilangan1)) 91 { 92 /* Pilihan 6: 93 bil3 < bil2 < bil1 */
  • 8.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 8 94std::cout << bilangan3 << ", " 95 << bilangan2 << ", dan " 96 << bilangan1 << "." 97 << std::endl; 98 99 } 100 else if((bilangan1 == bilangan2) && 101 (bilangan1 < bilangan3)) 102 { 103 /* Pilihan 7: 104 jika bil1 = bil2 dan bil1 < bil3 105 maka bil2 < bil3 */ 106 std::cout << bilangan1 << ", " 107 << bilangan2 << ", dan " 108 << bilangan3 << "." 109 << std::endl; 110 111 } 112 else if((bilangan1 == bilangan2) && 113 (bilangan1 > bilangan3)) 114 { 115 /* Pilihan 8: 116 Jika bila1 = bil2 dan bil1 > bil3 117 maka bil2 > bil3 */ 118 std::cout << bilangan3 << ", " 119 << bilangan2 << ", dan " 120 << bilangan1 << "." 121 << std::endl; 122 } 123 else if((bilangan1 == bilangan3) && 124 (bilangan1 < bilangan2)) 125 { 126 /* Pilihan 9: 127 Jika bil1 = bil3 dan bil1 < bil2 128 maka bil3 < bil2 */
  • 9.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 9 129std::cout << bilangan1 << ", " 130 << bilangan3 << ", dan " 131 << bilangan2 << "." 132 << std::endl; 133 } 134 else if((bilangan1 == bilangan3) && 135 (bilangan1 > bilangan2)) 136 { 137 /* Pilihan 10: 138 Jika bil1 = bil3 dan bil1 > bil2 139 maka bil3 > bil2 */ 140 std::cout << bilangan2 << ", " 141 << bilangan1 << ", dan " 142 << bilangan3 << "." 143 << std::endl; 144 } 145 else if((bilangan2 == bilangan3) && 146 (bilangan2 < bilangan1)) 147 { 148 /* Pilihan 11: 149 Jika bil2 = bil3 dan bil2 < bil1 150 maka bil3 < bil1 */ 151 std::cout << bilangan2 << ", " 152 << bilangan3 << ", dan " 153 << bilangan1 << "." 154 << std::endl; 155 } 156 else 157 { 158 std::cout << bilangan1 << ", " 159 << bilangan2 << ", dan " 160 << bilangan3 << "." 161 << std::endl; 162 } 163
  • 10.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 10 164return 0; 165 } 166 Pada langkah pertama pada baris ke-19 hingga 30, program meminta input kepada pengguna. Hasil input ini disimpan dalam variabel bilangan1, bilangan2 dan bilangan3. Ketiga variabel ini bertipe data int. 19 int bilangan1, bilangan2, bilangan3; 20 std::cout << "Input bilangan bulat pertama : "; 21 std::cin >> bilangan1; 22 std::cout << std::endl; 23 24 std::cout << "Input bilangan bulat kedua : "; 25 std::cin >> bilangan2; 26 std::cout << std::endl; 27 28 std::cout << "Input bilangan bulat ketiga : "; 29 std::cin >> bilangan3; 30 std::cout << std::endl; Langkah kedua adalah mengecek, membandingkan dan menampilkan nilai-nilai variabel ini. Pernyataan percabangan ini terdiri dari 13 kemungkinan. Kemungkinan pertama pada baris ke-34 hingga 44, program akan menampilkan nilai variabel dengan urutan bilangan1, bilangan2 dan bilangan3 ketika pernyataan (bilangan1 < bilangan2) && (bilangan2 < bilangan3) bernilai true. Nilai ini setara dengan bilangan1 < bilangan2 < bilangan3. 34 if ((bilangan1 < bilangan2) && 35 (bilangan2 < bilangan3)) 36 { 37 /* Pilihan 1: 38 bil1 < bil2 < bil3 */ 39 std::cout << bilangan1 << ", " 40 << bilangan2 << ", dan " 41 << bilangan3 << "." 42 << std::endl; 43
  • 11.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 11 44} Kemungkinan kedua pada baris ke-45 hingga 55 menampilkan nilai variabel dengan urutan bilangan1, bilangan3 dan bilangan2 ketika pernyataan (bilangan1 < bilangan3) && (bilangan3 < bilangan2) bernilai true. Pernyataan ini sama dengan pernyataan matematis bilangan1 < bilangan3 < bilangan2. 45 else if ((bilangan1 < bilangan3) && 46 (bilangan3 < bilangan2)) 47 { 48 /* Pilihan 2: 49 bil1 < bil3 < bil2 */ 50 std::cout << bilangan1 << ", " 51 << bilangan3 << ", dan " 52 << bilangan2 << "." 53 << std::endl; 54 55 } Kemungkinan ketiga pada baris ke-56 hingga 66 adalah mengecek nilai dari pernyataan (bilangan2 < bilangan1) && (bilangan1 < bilangan3). Pernyataan ini senilai dengan pernyataan matematis bilangan2 < bilangan1 < bilangan3. Jika pernyataan ini bernilai true maka program akan menampilkan urutan nilai dari variabel berikut bilangan2, bilangan1 dan bilangan3. 56 else if ((bilangan2 < bilangan1) && 57 (bilangan1 < bilangan3)) 58 { 59 /* Pilihan 3: 60 bil2 < bil1 < bil3 */ 61 std::cout << bilangan2 << ", " 62 << bilangan1 << ", dan " 63 << bilangan3 << "." 64 << std::endl; 65 66 }
  • 12.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 12 Kemungkinankeempat adalah mengecek pernyataan (bilangan2 < bilangan3) && (bilangan3 < bilangan1). Pernyataan ini senilai dengan pernyataan matematis bilangan2 < bilangan3 < bilangan1. Jika pernyataan ini bernilai true maka program akan menampilkan ururtan nilai dari variabel bilangan2, bilangan3, dan bilangan1. 67 else if((bilangan2 < bilangan3) && 68 (bilangan3 < bilangan1)) 69 { 70 /* Pilihan 4: 71 bil2 < bil3 < bil1 */ 72 std::cout << bilangan2 << ", " 73 << bilangan3 << ", dan " 74 << bilangan1 << "." 75 << std::endl; 76 77 } Kemungkinan kelima adalah mengecek nilai dari (bilangan3 < bilangan1) && (bilangan1 < bilangan2). Pernyataan ini senilai dengan pernyataan matematis bilangan3 < bilangan1 < bilangan2. Jika nilai ini bernilai true maka program akan menampilkan nilai dalam variabel bilangan3, bilangan1, dan bilangan2 secara berurutan. 78 else if((bilangan3 < bilangan1) && 79 (bilangan1 < bilangan2)) 80 { 81 /* Pilihan 5: 82 bil3 < bil1 < bil2 */ 83 std::cout << bilangan3 << ", " 84 << bilangan1 << ", dan " 85 << bilangan2 << "." 86 << std::endl; 87 88 }
  • 13.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 13 Kemungkinankeenam adalah mengecek nilai dari pernyataan (bilangan3 < bilangan2) && (bilangan2 < bilangan1). Pernyataan ini setara dengan pernyataan matematis bilangan3 < bilangan2 < bilangan1. Jika pernyataan ini bernilai true maka program akan menampilkan nilai dari variabel bilangan3, bilangan2 dan bilangan1 secara berurutan. 89 else if((bilangan3 < bilangan2) && 90 (bilangan2 < bilangan1)) 91 { 92 /* Pilihan 6: 93 bil3 < bil2 < bil1 */ 94 std::cout << bilangan3 << ", " 95 << bilangan2 << ", dan " 96 << bilangan1 << "." 97 << std::endl; 98 99 } Kemungkinan ketujuh adalah mengecek nilai dari pernyataan (bilangan1 == bilangan2) && (bilangan1 < bilangan3). Nilai ini setara dengan nilai pernyataan matematis bilangan1 = bilangan2 tetapi bilangan1 < bilangan3. Akibatnya, nilai dalam variabel bilangan2 juga kurang dari bilangan3. Jika pernyataan ini bernilai true maka program akan menampilkan nilai dari variabel bilangan1, bilangan2 dan bilangan3 secara berurutan. 100 else if((bilangan1 == bilangan2) && 101 (bilangan1 < bilangan3)) 102 { 103 /* Pilihan 7: 104 jika bil1 = bil2 dan bil1 < bil3 105 maka bil2 < bil3 */ 106 std::cout << bilangan1 << ", " 107 << bilangan2 << ", dan " 108 << bilangan3 << "." 109 << std::endl; 110
  • 14.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 14 111} Kemungkinan kedelapan adalah mengecek nilai dari pernyataan (bilangan1 == bilangan2) && (bilangan1 > bilangan3). Pernyataan ini setara dengan pernyataan matematis bilangan1 = bilangan2 dan bilangan1 > bilangan3. Akibatnya, nilai dalam variabel bilangan2 juga lebih dari bilangan3. Jika pernyataan ini bernilai true maka program akan menampilkan nilai dari variabel bilangan3, bilangan2 dan bilangan1 secara berurutan. 112 else if((bilangan1 == bilangan2) && 113 (bilangan1 > bilangan3)) 114 { 115 /* Pilihan 8: 116 Jika bila1 = bil2 dan bil1 > bil3 117 maka bil2 > bil3 */ 118 std::cout << bilangan3 << ", " 119 << bilangan2 << ", dan " 120 << bilangan1 << "." 121 << std::endl; 122 } Kemungkinan kesembilan adalah mengecek nilai dari pernyataan (bilangan1 == bilangan3) && (bilangan1 < bilangan2). Pernyataan ini setara dengan pernyataan matematis bilangan1 = bilangan3 dan bilangan1 < bilangan2. Akibatnya, nilai dalam variabel bilangan3 < bilangan2 juga. 123 else if((bilangan1 == bilangan3) && 124 (bilangan1 < bilangan2)) 125 { 126 /* Pilihan 9: 127 Jika bil1 = bil3 dan bil1 < bil2 128 maka bil3 < bil2 */ 129 std::cout << bilangan1 << ", " 130 << bilangan3 << ", dan " 131 << bilangan2 << "." 132 << std::endl;
  • 15.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 15 133} Kemungkinan kesepuluh adalah mengecek nilai dari pernyataan (bilangan1 == bilangan3) && (bilangan1 > bilangan2). Pernyataan ini setara dengan nilai dari pernyataan matematis bilangan1 = bilangan3 dan bilangan1 > bilangan2. Akibatnya, nilai dari variabel bilangan3 > bilangan2 juga. Jika pernyataan ini bernilai true maka program akan menampilkan nilai dari variabel bilangan2, bilangan1 dan bilangan3 secara berurutan. 134 else if((bilangan1 == bilangan3) && 135 (bilangan1 > bilangan2)) 136 { 137 /* Pilihan 10: 138 Jika bil1 = bil3 dan bil1 > bil2 139 maka bil3 > bil2 */ 140 std::cout << bilangan2 << ", " 141 << bilangan1 << ", dan " 142 << bilangan3 << "." 143 << std::endl; 144 } Kemungkinan kesebelas adalah mengecek nilai dari pernyataan (bilangan2 == bilangan3) && (bilangan2 < bilangan1). Pernyataan ini setara dengan pernyataan matematis bilangan2 = bilangan3 dan bilangan2 < bilangan1. Akibatnya, nilai dari variabel bilangan2 < bilangan1 juga. 145 else if((bilangan2 == bilangan3) && 146 (bilangan2 < bilangan1)) 147 { 148 /* Pilihan 11: 149 Jika bil2 = bil3 dan bil2 < bil1 150 maka bil3 < bil1 */ 151 std::cout << bilangan2 << ", " 152 << bilangan3 << ", dan " 153 << bilangan1 << "." 154 << std::endl;
  • 16.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 16 155} Jika semua persyaratan mulai dari kemungkinan pertama hingga kesebelas tidak terpenuhi, maka nilai dalam variabel bilangan1 = bilangan2 = bilangan3. Sehingga, program akan menampilkan nilai variabel dengan urutan bilangan1, bilangan2, dan bilangan3. 156 else 157 { 158 std::cout << bilangan1 << ", " 159 << bilangan2 << ", dan " 160 << bilangan3 << "." 161 << std::endl; 162 } Gambar 03.07.02 berikut ini adalah contoh output program dengan nilai variabel bilangan1, bilangan2 dan bilangan3 yang berbeda. Output yang dihasilkan adalah urutan dari bilangan terkecil hingga terbesar. Gambar 03.07.02. Contoh Output Program Dengan Nilai Yang Berbeda
  • 17.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 17 Gambar03.07.03 adalah contoh output program dengan nilai variabel bilangan1 dan bilangan3 yang sama sementara nilai variabel bilangan2 berbeda. Program akan mengurutkan nilai variabel dari terkecil hingga terbesar. Gambar 03.07.03. Contoh Output Program Ketika Diinput Dua Nilai Yang Sama Gambar 03.07.04 berikut ini menampilkan program dengan nilai dalam variabel bilangan1, bilangan2 dan bilangan3 yang sama. Program akan menampilkan output program berikut: Gambar 03.07.04. Contoh Output Program Ketika Diinput Tiga Nilai Yang Sama
  • 18.
    03.07.SortThreeIntegers #bayuyudhasaputra Halaman 18 03.07.04.Refleksi Program ini dapat diperbaiki dengan menambahkan beberapa hal berikut: 1. Mengecek input dari pengguna untuk memastikan nilai yang diinput adalah bilangan bukan tipe data lain. 2. Mengecek input apakah mempunyai nilai atau tidak. 3. Menawarkan kembali input kepada pengguna setelah proses sudah dilakukan, baik ketika program memunculkan pesan error atau ketika program menampilkan output yang sesuai. 03.07.05. Daftar Rujukan Liang. 2014. Introduction to Programming with C++ 3rd Edition. London: Pearson Education yang bisa diakses pada tautan berikut: 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 Baris kode ini bisa diakses pada tautan berikut: https://github.com/bayuYudhaSaputra/introduction-programming-CPP- liang/blob/main/03.07.SortThreeIntegers.cpp