Anda di halaman 1dari 25

LAPORAN PRAKTIKUM ALGORITMA DAN

PEMROGRAMAN

UAS

OLEH

NAMA : Kresna Wijaya

NIM : 1808561085

KELAS :D

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS UDAYANA

2019
PERMASALAHAN

1. Sebuah toko kopi menjual kopi dalam kemasan 2 kg saja, yaitu seharga
50000 per kemasan. Ketika customer melakukan pemesanan, maka kopi
yang dipesan akan dikirim dalam bentuk box. Toko memiliki 3 jenis box,
yaitu box besar mampu menampung 20 kemasan, box sedang mampu
menampung 10 kemasan, dan box kecil mampu menampung 5 kemasan.
Harga box besar adalah 10000, box sedang 7500, dan box kecil adalah 5000.
Dalam melakukan packing, toko menggunakan aturan bahwa box besar dan
box sedang tidak boleh memiliki ruang kosong (harus penuh), sedangkan
box kecil boleh saja kosong. Toko ingin meminimalkan penggunaan box,
dengan cara melakukan pemilihan box mulai dari box terbesar dulu baru
medium dan selanjutnya box terkecil. Misalnya jika customer memesan 52
kemasan kopi, maka akan digunakan 2 box besar, 1 box sedang dan 1 box
kecil. Buatlah program untuk menerima input berupa total kemasan yang
dipesan oleh seorang customer dan menentukan berapa jumlah masing-
masing tas dan biaya total yang harus dibayar, yaitu harga box dan harga
kopi yang dibeli.
2.
3. Buatlah program untuk melakukan input 10 buah data buku. Data buku
terdiri atas judul, harga dan pengarang. Setelah pengguna melakukan input
data, maka lakukan pengurutan berdasarkan harga, mulai dari terendah
sampai harga tertinggi.
4. Buatlah program dengan menggunakan fungsi untuk mengecek apakah
suatu substring ditemukan di dalam string lainnya.
Contoh :
String : Aku anak Indonesia
Substring : esia
Substring “esia” ada ada pada string “Aku anak Indonesia”
Atau
String : Aku anak Indonesia
Substring : ramai
Substring “ramai” tidak ada ada pada string “Aku anak Indonesia”
5. Buatlah program untuk mengecek apakah username dan password yang
dimasukkan benar. Username yang benar 123 sedangkan password 321. Jika
benar, berikan pesan sukses, namun jika salah, maka minta pengguna untuk
memasukkan username dan password kembali sampai maksimal tiga kali
mencoba.
6. Buatlah program untuk melakukan input array 1 dimensi bertipe integer.
Kemudian mintalah user untuk menginput sebuah threshold. Lalu
tampilkanlah berapa jumlah data yang nilainya lebih besar daripada
threshold!
Contoh :
Input Panjang
Data : 3
Data ke-1 : 23
Data ke-2 : 4
Data ke-3 : 7
Input Threshold : 7
Jumlah data di atas threshold : 1
7. Buatlah program yang memiliki 2 fungsi yaitu :
a. Konversi bilangan desimal ke bilangan biner
b. Konversi bilangan biner ke bilangan decimal
8. Buatlah program untuk meminta input n buah string. Nilai n juga diinput.
Kemudian program akan memberikan keluaran string terpanjang.
Contoh :
Masukkan jumlah string : 3
String 1 : Aku belajar
String 2 : Dimakah Ibu berada?
String 3 : Hello World
String terpanjang : Dimanakah Ibu berada?
9. Buatlah fungsi rekursi untuk kasus berikut :
Lebah adalah hewan yang hidup berkoloni. Ada fakta unik tentang lebah
yang tidak diketahui semua orang. Lebah jantan diproduksi dari sel telur
ratu yang tidak terbuahi (artinya lebah jantan tidak memiliki Ayah),
sedangkan lebah betina dihasilkan dari sel telur yang sudah dibuahi (lebah
betina memiliki Ayah dan Ibu). Jika ditelusuri pohon nenek moyang dari
seekor lebah jantan, adalah sebagai berikut :
10. Buatlah program untuk mengubah sebuah array 2 dimensi menjadi array 1
Dimensi, Jumlah baris dan kolom untuk array adalah sesuai dengan input
pengguna.
PEMBAHASAN

1. Program untuk menentukan berapa jumlah masing-masing tas dan biaya


total yang harus dibayar (harga box dan harga kopi yang dibeli)

Code :

Output :
Penjelasan Code :
Sebelum menentukan jumlah box dan total biaya, pertama program
tersebut meminta user untuk menginput total kemasan. Setelah mendapat
total kemasan maka program akan menghitung harga kemasan, dengan
rumus : harga kemasan = total kemasan × 50000.
Kemudian program akan menentukan jumlah box yang digunakan
untuk menampung kemasan. Akan dilakukan pengecekan mulai dari box
besar – box sedang – box kecil. Pertama akan dicek jumlah box besar yang
dibutuhkan dengan kondisi jika kemasan berjumlah lebih besar atau sama
dengan 20 buah. Apabila kondisi terpenuhi maka akan ditentukan jumlah
box besar yang diperlukan dengan rumus : kemasan / 20, dan akan
ditentukan sisa kemasan dengan rumus : kemasan mod 20. Selanjutnya akan
dihitung harga box besar dengan rumus : banyak box besar × 10000 dan
program akan menampilkan jumlah box besar yang digunakan.
Kedua akan dicek jumlah box sedang yang dibutuhkan dengan
kondisi jika kemasan berjumlah lebih besar atau sama dengan 10 buah.
Apabila kondisi terpenuhi maka akan ditentukan jumlah box besar yang
diperlukan dengan rumus : kemasan / 10, dan akan ditentukan sisa kemasan
dengan rumus : kemasan mod 10. Selanjutnya akan dihitung harga box
dengan rumus : harga box sebelumnya + banyak box sedang × 7500 dan
program akan menampilkan jumlah box sedang yang digunakan.
Ketiga akan dicek jumlah box sedang yang dibutuhkan dengan
kondisi jika kemasan berjumlah lebih besar atau sama dengan 5 buah.
Apabila kondisi terpenuhi maka akan ditentukan jumlah box besar yang
diperlukan dengan rumus : kemasan / 5, dan akan ditentukan sisa kemasan
dengan rumus : kemasan mod 5. Apabila masih terdapat sisa kemasan, maka
box kecil yang diperlukan akan ditambah. Selanjutnya akan dihitung harga
box dengan rumus : harga box sebelumnya + banyak box kecil × 5000 dan
program akan menampilkan jumlah box kecil yang digunakan.
Setelah semua pengecekan selesai maka akan dihitung harga total
dengan rumus : harga box + harga kemasan. Terakhir, program akan
menampilkan harga box, harga kemasan, dan harga total yang telah dihitung
ke layar user.

2. Program untuk menentukan hasil perkalian matriks.


Code :
Output :
Penjelasan Code :
Pertama program akan meminta user menginput nilai dari baris
untuk matriks A dan matriks B, kolom matriks A, dan kolom matriks B.
Setelah itu dengan perulangan for, program akan menampilkan satu persatu
elemen pada matriks A dan meminta user menginput nilainya, begitu pula
dengan elemen matriks B. Nilai- nilai yang telah diinput akan ditampung
dalam variabel array yaitu array A untuk matrik A dan array B untuk matriks
B. Selanjutnya, elemen- elemen matriks A yang telah diinput akan
ditampilkan di layar user kembali dengan bentuk yang menyerupai
penulisan matriks sesungguhnya, begitu pula dengan matriks B. Bagian
tersebut dilakukan dengan member perintah printf terhadap array A dan
array B.
Setelah itu akan dihitung nilai dari matriks Kali (array yang
menampung hasil kali dari matriks A dan matriks B) dengan perulangan for
bersarang. Nilai dari hasil kali akan ditampung sementara oleh variabel sum,
setelah penghitungan untuk elemen baris 1 kolom 1 sudah selesai maka nilai
sum akan menjadi elemen array Kali baris1 kolom 1 dan begitu seterusnya.
Terakhir, program akan manampilkan hasil kali matriks yang telah didapat.

3. Program untuk mengurutkan data buku sesuai harga.


Code :
Output :
Penjelasan Code :
Program di atas menggunakan data bertipe struct , maka dari itu
terdapat pendeklarasian struct sebelum fungsi main yang didalamnya
terdapat variabel dengan tipe char untuk menampung string judul buku dan
nama pengarang, dan variabel tipe float untuk menampung nilai dari harga
buku.
Pada fungsi main, pertama program meminta user untuk menginput
banyak data yang hendak diinput, setelah itu program akan meminta user
menginput judul buku, harga, dan nama pengarang sebanyak jumlah data
yang telah diinput tadi. Nilai-nilai yang telah diinput tadi akan ditampung
oleh struct buku buku. Selanjutnya akan diurutkan harga buku terendah
sampai terbesar dengan menggunakan metode bubble sort. Data yang
memiliki harga buku terendah akan ditempatkan pada data pertama,
kemudian data yang harga bukunya lebih mahal dari data pertama akan
ditempatkan pada data kedua dan seterusnya.
Setelah data terurut sesuai harga buku terendah ke terbesar maka
data tersebut akan dicetak sesuai urutannya.

4. Program untuk mengecek apakah suatu substring ditemukan di dalam string


lainnya.
Code :
Output :

Penjelasan Code :
Seperti program lainnya, user akan diminta untuk menginput string
dan substring yang diinginkan terlebih dahulu. Untuk string akan di tamping
pada variabel a dan substring pada variabel b dengan perintah gets.
Selanjutnya akan dihitung jumlah karakter masing-masing dari string dan
substring dengan fungsi strlen, jumlah karakter string akan ditampung pada
variabel panjang dan , jumlah karakter substring akan ditampung pada
variabel panjang2.
Selanjutnya fungsi untuk mengecek apakah substring ada pada
string. Dengan perulangan while dan iterasi i, selama i kurang dari jumlah
panjang string dan tanda = 0 (substring belum ditemukan pada string) maka
perulangan akan dilakukan. Kemudian terdapat perulangan while lagi untuk
mengecek setiap karakter dari string apakah memuat karakter pada substring
atau tidak. Jika semua karakter pada substring telah ditemukan pada string ,
maka nilai variabel tanda akan sama dengan 1, sehingga perulangan
berhenti. Apabila tanda = 1 maka di layar user akan ditampilkan kalimat
“substring terdapat dalam string” dan apabila tanda = 0 maka di layar user
akan ditampilkan kalimat “substring tidak terdapat dalam string”.

5. Program untuk mengecek apakah username dan password yang dimasukkan


benar.
Code :

Output :
Penjelasan Code :
Program di atas akan mengecek apakah username dan password
yang diinput user sudah benar atau tidak. User akan diminta memasukkan
username dan password terlebih dahulu, kemudian dengan perintah if akan
di cek kebenarannya. Apabila username = 123 dan password = 321 maka
akan menampilkan kata selamat. Namun jika tidak maka user akan meminta
user menginput kembali username dan password dan akan di cek
kebenarannya lagi. Program juga akan menampilkan percobaan ke berapa
yang sedang dilakukan user, juga ditampilkan peringatan bahwa hanya
dapat melakukan 3 kali percobaan. Ketika percobaan telah dilakukan
sebanyak 3 kali maka program akan berhenti meminta user menginput
username dan password.
6. Program untuk mengecek berapa jumlah data yang nilainya lebih besar
daripada threshold.
Code :

Output :

Penjelasan Code :
Agar program dapat berjalan maka user harus menginput panjang
data dan threshold nya terlebih dahulu. Setelah itu program akan meminta
user menginput nilai – nilai pada jumlah data yang telah diinput. Nilai-nilai
yang diinput tersebut akan ditampung oleh variabel array data. Kemudian
akan di cek jumlah data yang memiliki nilai data lebih besar dari threshold.
Dengan perulangan for selama iterasi kurang dari panjang data, apabila data
lebih besar dari threshold maka nilai variabel total akan bertambah, dan
apabila tidak maka akan dilanjutkan pengecekan ke data selanjutnya.
Terakhir, program akan menampilkan nilai dari variabel total setelah
perulangan selesai.

7. Program yang memiliki 2 fungsi yaitu :


a. Konversi bilangan desimal ke bilangan biner
b. Konversi bilangan biner ke bilangan decimal
Code :
Output :

Penjelasan Code :
Program di atas menggunakan switch case agar user bisa memilih
menu yang diinginkan. Untuk case pertama yaitu mengubah bilangan biner
ke decimal dan case kedua yaitu mengubah bilangan decimal ke biner.
Setelah user menginput pilihan maka user diminta untuk menginput
bilangan. Apabila memilih case 1 maka akan diminta menginput bilangan
biner dan sebaliknya untuk case 2.
Pada program di atas terdapat 2 buah fungsi yang masingng-masing
berguna untuk mengonversi bilangan biner ke decimal dan decimal ke biner.
Selanjutnya fungsi tersebut akan dipanggil pada perintah case sesuai menu
yang sudah ditampilkan.
Untuk fungsi pertama, yaitu fungsi void satu, user diminta
menginput bilangan biner yang ingin dikonversi terlebih dahulu. Setelah itu
program akan mengonversi bilangan dengan formula yang terdapat di dalam
perulangan do while. Setelah didapat konversinya, maka akan langsung
ditampilkan ke layar user.
Untuk fungsi kedua, yaitu fungsi void dua, user diminta menginput
bilangan desimal yang ingin dikonversi terlebih dahulu. Setelah itu program
akan mengonversi bilangan dengan formula yang terdapat di dalam
perulangan while. Setelah didapat konversinya, maka akan langsung
ditampilkan ke layar user.
Program ini juga memungkinkan untuk user melakukan beberapa
kali pengonversian bilangan. Setelah satu bilangan di konversi maka akan
muncul menu untuk menghitung kembali. Pada menu tersebut user bisa
memilih ‘ya atau tidak’. Apabila memilih ‘ya’ maka program akan
menampilkan pilihan menu konversi lagi. Hal tersebut dapat dilakukan
karena terdapat perintah go to yang akan membuat program kembali lagi ke
awal. Dan apabila user memilih ‘tidak’ maka program akan berhenti.

8. Program untuk memberikan keluaran string terpanjang.


Code :
Output :

Penjelasan Code :
Program ini terlebih dahulu akan meminta user untuk menginput
jumlah data string yang ingin dicek user. Setelah mendapat jumlahnya,
maka user diminta untuk menginput masing-masing string yang dimiliki.
String-string tersebut akan ditampung dalam sebuah array 2 dimensi. Ketika
user menginput string maka panjang string atau jumlah karakter pada string
akan langsung dihitung dengan fungsi strlen dan nilai strlen akan ditampung
oleh variabel array panjang. Kemudian akan ditentukan string terpanjang
dengan mengecek nilai variabel panjang tiap data string. Metode yang
digunakan adalah selection sort. Setelah didapat string terpanjang, maka
string tersebut akan ditampilkan pada layar user.

9. Program untuk menghitung jumlah lebah sampai generasi tertentu.


Code :

Output :

Penjelasan Code :
Setelah diperhatikan, ternyata generasi lebah tersebut menggunakan
system barisan bilangan fibonnaci. maka, pada program diatas pada fungsi
rekursif yang dibuat menggunakan formula dari baris bilangan fibonnaci.
Dimana, saat nilai input pada fungsi fibonnaci adalah 1 atau 0, maka nilai
balik yang diberikan fungsi adalah 1. Sedangkan, apabila nilai input bukan
1 atau bukan 0, maka nilai balik yang diberikan akan sesuai dengan rumus
: fibonnaci (nilai – 1) + fibonnaci (nilai – 2). Pada bagian tersebutlah yang
disebut rekursif atau fungsi yang memanggil fungsi itu sendiri. Untuk nilai
input yang akan masuk ke fungsi didapat dari inputan user. User dapat
menginput bilangan yang menjadi generasi penelusuran nenek moyang.
Perintah tersebut terdapat pada fungsi main. Setelah nilai diinput user maka
nilai tersebut ditampung pada variabel count. Setelah itu hasil akan didapat
dengan menjadikan variabel count sebagai input terhadap fungsi rekursif
fibonnaci.

10. Program untuk mengubah sebuah array 2 dimensi menjadi array 1 dimensi.
Code :
Output :

Penjelasan Code :
Sebelum mengonversi array 2 dimensi ke array 1 dimensi, maka kita
harus meminta user menginputkan ordo dari array 2 dimensi tersebut.
Setelah itu meminta user untuk menginput tiap-tiap elemen dari array 2
dimensi. Setelahnya program akan menampilkan kembali array 2 dimensi
yang telah diinput dengan bentuk matriks. Ketika mencetak array 2 dimensi
tersebut, program juga akan melakukan pengonversian dimensi array,
dengan rumus : B[i*b + j] = A[i][j], dimana variabel b adalah jumlah baris
array 2 dimensi. Setelah elemen array 2 dimensi telah dimasukkan ke array
1 dimensi, maka terakhir program akan menampilkan hasil konversinya
dilayar user.

Anda mungkin juga menyukai