1. Dian Wahyu Aditya
3 RPA
Kasus 1
Menampilkan deret angka dengan urutan genap genap ganjil ganjil.
Jika user menginputkan nilai 10 maka program akan menulis deret bilangan seperti
berikut :
0 2 1 3 4 6 5 7 8 10
Pemecahan Masalah
Source :
#include <iostream>
using namespace std;
void jalankan(int input) {
int index = 0;
for(int i=0;i<input;i++) {
index++;
switch (index) {
case 1 : printf("%d ", i); break;
case 2 : printf("%d ", i+1); break;
case 3 : printf("%d ", i-1); break;
case 4 : printf("%d ", i); index = 0; break;
}
}
}
int main() {
int input = 0;
do {
cout << "Input : ";
scanf("%d", &input);
jalankan(input);
cout << "n";
} while (input > 0);
return 0;
}
2. Penjelasan program :
Pertama pada baris function main() terdapat sebuah perulangan yang akan
meminta inputan selama inputan lebih dari (>) 0 (nol). Jika inputan memenuhi syarat,
maka program akan melempar inputan ke procedure jalankan(int input). Maka sekarang
inputan yang dimasukkan oleh user telah disimpan dalam variable input yang ada dalam
procedure jalankan. Selanjutnya skema penulisan deret bilangan adalah sebagai
berikut :
Terdapat variable index bertipe integer yang bernilai 1.
Selanjutnya dilakukan perulangan, yang menampilkan deret bilangan sebanyak
inputan.
Selama i kurang dari (<) inputan maka nilai i akan terus ditambah 1, begitu pula
dengan nilai index, akan tetapi yang berbeda adalah nilai maksimum index
hanya sampai 4, jika nilai index = 4 maka nilai index akan dikembalikan ke nilai
awal yaitu satu, sehingga skema perulanganya jika i dan index ditulis adalah
sebagai berikut :
i 0 1 2 3 4 5 6 7 8 9
index 1 2 3 4 1 2 3 4 1 2
Untuk menghasilkan deret bilangan genap genap ganjil ganjil maka skema
yang dijalankan disini adalah ketika i berada pada index tertentu maka yang nilai
yang dicetak adalah sebagai berikut :
o Jika index = 1 maka cetak nilai i.
o Jika index = 2 maka cetak nilai i+1.
o Jika index = 3 maka cetak nilai i-1.
o Jika index = 4 maka cetak nilai i kemudian kembalikan nilai
index menjadi 1.
3. Dan hasil outputnya adalah sebagai berikut :
i 0 1 2 3 4 5 6 7 8 9
+1 -1 +1 -1 +1
Hasil 0 2 1 3 4 6 5 7 8 10
index 1 2 3 4 1 2 3 4 1 2
Screen Capture :
Kasus 2
Mengkonversi bilangan desimal mulai dari nol hingga inputan menjadi bilangan biner.
Kemudian menghitung total angka nol yang ada. Contoh jika user menginputkan nilai
5 maka proses program adalah sebagai berikut :
Desimal Biner Jumlah angka nol
0 0 1
1 1 0
2 10 1
3 11 0
4 100 2
5 101 1
Total 5
4. Pemecahan Masalah
Source :
#include <iostream>
using namespace std;
int run(int input){
int hasil = 0;
while(input > 1) {
if((input % 2) == 0) hasil++;
input = input / 2;
}
return hasil;
}
int mainx(int input) {
int hasil = 0;
while(input > 0){
hasil += run(input);
cout << input << " : " << run(input) << "n";
input--;
}
cout << "0 : 1" << "n";
return hasil+1;
}
int main() {
int input = 0;
do {
cout << "Input : ";
scanf("%d", &input);
cout << "Hasil : " << mainx(input) << "n";
} while (input > 0);
return 0;
}
Penjelasan program :
Dalam baris kode di atas terdapat beberapa function antara lain :
Function run(int input), yaitu function yang mengembalikan nilai integer berupa
jumlah karakter 0 dari inputan yang terlebih dahulu dikonversi menjadi
bilangan biner.
Function mainx(int input), merupakan procedure yang akan menghitung total
karakter 0 dari nol (0) sampai inputan yang tentunya dikonversikan oleh
function run.
5. Function main() merupakan function utama yang akan menjalankan procedure
mainx selama inputan lebih dari nol (0).
Berikut cara kerja dari masing-masing function :
Function run
o Ada variable hasil bertipe integer yang akan menampung jumlah
karakter 0 sementara sebelum function mengembalikan nilai.
o Selama inputan > 1 maka program akan terus melakukan perulangan.
o Jika sisa hasil bagi dari inputan = 0 maka hasil = hasil+1.
o Nilai inputan = inputan / 2. Tipe data integer selalu bernilai bulat,
contoh: 5/2=2, sehingga semua bilangan jika dibagi 2 secara terus
menerus akan berhenti pada nilai 1 yang artinya menghentikan
perulangan.
o Setelah perulangan berhenti function akan mengembalikan nilai hasil
yang berupa jumlah karakter 0.
Function mainx
o Function ini juga memiliki variable hasil untuk menyimpan sementara
total dari angka nol dari deret nilai 0 hingga n inputan.
o Perulangan akan dilakukan mulai dari i yang bernilai nol hingga n
inputan.
o Selama perulangan, function akan memasukkan nilai i ke dalam function
run, kemudian menambahkan variable hasil dengan nilai yang
dikembalikan oleh function run.
o Setelah perulangan selesai function akan mengembalikan nilai berupa
total karakter 0 dari deret bilangan 0 hingga n inputan.
Function main
Function ini bertugas meminta inputan selama user menginputkan nilai > 0.
Kemudian inputan user tersebut di kirim ke function mainx dan hasil return dari
mainx akan dicetak sebagai total karakter 0 dari deret bilangan desimal 0
hingga n inputan yang dikonversi menjadi bilangan biner.
6. Screen Capture :
Kasus 3
Menentukan inputan string kata apakah merupakan Palyndrome atau bukan. Contoh
kata-kata palyndrome : katak, kasur rusak.
Pemecahan Masalah
Source :
#include <iostream>
#include <string>
using namespace std;
string check(string kata) {
int len = kata.length();
int setengah = len/2;
int loop = 0;
bool auth = true;
while(loop < setengah) {
if(kata[loop] != kata[len-1]){
auth = false;
break;
}
loop++;
len--;
}
if(auth) {
return "Palyndrome";
} else {
return "Bukan Palyndrome";
}
7. }
int main() {
string a = "";
cout << "Input : ";
getline(cin, a);
cout << check(a) << "n";
return 0;
}
Penjelasan program :
Program dimulai dari function main(). Pada function ini program akan meminta
inputan berupa string. Setelah inputan didapatkan inputan akan dikirim ke function
check(string kata) dan kemudian program akan mencetak nilai string yang
dikembalikan yaitu Palyndrome atau Bukan Palyndrome. Sebenarnya seluruh
proses pemeriksaan kata terdapat pada function check. Berikut cara kerjanya :
Dalam function ini terdapat beberapa variable antara lain :
o Integer len, berisi panjang karakter dari string inputan.
o Integer setengah, bernilai len/2.
o Integer loop, bernilai 0;
o Boolean auth, bernilai benar (true).
Proses pengecekan, selama nilai loop < setengah maka lakukan proses berikut :
o Jika karakter inputan yang ke loop karakter yang ke len-1 (karakter
yang terakhir) maka auth = false, hentikan perulangan secara paksa
karena sudah dapat dipastikan bahwa kata tersebut bukan merupakan
palyndrome.
o loop = loop + 1.
o len = len 1.
Setelah perulangan selesai sekarang pengecekan dilakukan pada boolean auth.
Jika perulangan diatas tidak dihentikan secara paksa (menggunakan break) maka
auth akan tetap bernilai default yaitu true yang artinya function akan
mengembalikan kata Palyndrome. Begitu pula sebaliknya, jika auth bernilai
false maka function akan mengembalikan kata Bukan Palyndrome.
8. Cara pemeriksaan di atas jika digambarkan secara sederhana adalah sebagai
berikut :
Input : kasur rusak
Len : 11
Setenga : 5
h
loop 0 1 2 3 4 5
k a s u r r u s a k
5 6 7 8 9 10 len-1
k a s u r r u s a k