Anda di halaman 1dari 6

ANALISA ALGORITMA

SEMESTER GENAP TAHUN AJARAN 2022/2023


LAPORAN TUGAS AKHIR

DISUSUN OLEH :

Nama : Rawiansyah Andhika Suarnanusa


Muhammad Hafizh Maulana
Rafli Iskandar Kavarera
Muhammad Fachrul Ghifari

NIM : 123210186
123210194
123210131
123210144

Kelas : IF-A

PROGRAM STUDI INFORMATIKA


JURUSAN INFORMATIKA
FAKULTAS TEKNIK INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL ”VETERAN”
YOGYAKARTA
2023
Permasalahan
Masalah Pemilihan Stasiun Pengisian Bahan Bakar: Ketika mengemudi jarak jauh, kita perlu
memilih stasiun pengisian bahan bakar yang paling nyaman atau murah untuk mengisi tangki
kendaraan. Pendekatan greedy dapat digunakan dengan memilih stasiun pengisian bahan
bakar terdekat pada setiap saat, namun ini mungkin tidak menghasilkan solusi yang paling
hemat secara keseluruhan.
Source Code
def cariStasiunTerdekat(jarak, n):
indeksTerdekat = 0
for i in range(1, n):
if jarak[i] < jarak[indeksTerdekat]:
indeksTerdekat = i
return indeksTerdekat

def hitungBiaya(jarak, harga, n, kapasitasTangki):


totalBiaya = 0.0
sisaBensin = kapasitasTangki
indeksStasiun = cariStasiunTerdekat(jarak, n)

while sisaBensin > 0:


jarakTempuh = jarak[indeksStasiun]
biaya = jarakTempuh * harga[indeksStasiun]

if biaya > sisaBensin:


biaya = sisaBensin * harga[indeksStasiun]
sisaBensin = 0
else:
sisaBensin -= jarakTempuh

totalBiaya += biaya
indeksStasiun = cariStasiunTerdekat(jarak, n)

return totalBiaya, indeksStasiun

def main():
while True:
n1 = input("ketik exit untuk keluar\nMasukkan jumlah stasiun pengisian bahan bakar: ")
if n1=="exit":
break
n = int(n1)
jarak = []
harga = []
print("Masukkan jarak dari lokasi saat ini ke setiap stasiun (dalam km):")
for i in range(n):
jarak.append(float(input()))

print("Masukkan harga bahan bakar di setiap stasiun (dalam Rupiah):")


for i in range(n):
harga.append(float(input()))

kapasitasTangki = float(input("Masukkan kapasitas tangki kendaraan (dalam liter): "))

totalBiaya, indeksStasiun = hitungBiaya(jarak, harga, n, kapasitasTangki)

print("Stasiun pengisian bahan bakar terdekat adalah stasiun ke-%d." % (indeksStasiun + 1))
print("Total biaya pengisian bahan bakar adalah: Rp %.2f" % totalBiaya)
print("\n\n\n\n\n")

if __name__ =="__main__":
main()

Table 1 Source Code Dengan Phyton


Penjelasan Source Code
1. Fungsi cariStasiunTerdekat:
 Fungsi ini memiliki dua parameter: jarak, sebuah daftar yang berisi jarak dari
lokasi saat ini ke setiap stasiun bahan bakar, dan n, jumlah total stasiun bahan
bakar.
 Fungsi ini menginisialisasi variabel indeksTerdekat (indeks terdekat) dengan
nilai 0.
 Fungsi kemudian melakukan iterasi dari 1 hingga n menggunakan perulangan
for.
 Dalam perulangan, jarak pada setiap indeks dibandingkan dengan jarak pada
indeks terdekat saat ini (indeksTerdekat). Jika jarak pada indeks saat ini lebih
pendek, maka indeksTerdekat diperbarui dengan indeks saat ini.
 Terakhir, fungsi mengembalikan indeks dari stasiun bahan bakar terdekat.
2. Fungsi hitungBiaya:
 Fungsi ini memiliki empat parameter: jarak (daftar jarak), harga (daftar harga
bahan bakar), n (jumlah total stasiun bahan bakar), dan kapasitasTangki
(kapasitas tangki bahan bakar).
 Fungsi ini menginisialisasi variabel totalBiaya (total biaya) dan sisaBensin
(sisa bahan bakar) dengan nilai 0 dan kapasitasTangki, masing-masing.
 Fungsi memanggil cariStasiunTerdekat untuk mencari indeks dari stasiun
bahan bakar terdekat dan menetapkannya ke variabel indeksStasiun.
 Fungsi memasuki perulangan while yang terus berjalan selama masih ada
bahan bakar yang tersisa (sisaBensin > 0).
 Dalam perulangan, fungsi menghitung jarak ke stasiun bahan bakar terdekat
(jarakTempuh) dengan menggunakan indeks yang diperoleh sebelumnya.
 Selanjutnya, fungsi menghitung biaya pengisian bahan bakar (biaya) dengan
mengalikan jarak dengan harga bahan bakar di stasiun terdekat
(harga[indeksStasiun]).
 Jika biaya pengisian bahan bakar melebihi sisa bahan bakar yang tersisa
(biaya > sisaBensin), biaya tersebut disesuaikan agar sesuai dengan sisa
bahan bakar yang tersisa dan sisaBensin diatur menjadi 0.
 Sebaliknya, jarak yang telah ditempuh dikurangi dari sisa bahan bakar yang
tersisa (sisaBensin -= jarakTempuh).
 Biaya pengisian bahan bakar ditambahkan ke total biaya (totalBiaya +=
biaya).
 Terakhir, fungsi memperbarui indeks dari stasiun bahan bakar terdekat dengan
memanggil kembali fungsi cariStasiunTerdekat.
 Fungsi terus melakukan iterasi sampai tidak ada bahan bakar yang tersisa.
 Fungsi mengembalikan total biaya (totalBiaya) dan indeks dari stasiun bahan
bakar terdekat (indeksStasiun).
Bagian utama dari kode tersebut meminta input dari pengguna dan menampilkan output:
 Pengguna diminta untuk memasukkan jumlah stasiun bahan bakar (n).
 Selanjutnya, pengguna diminta untuk memasukkan jarak dari lokasi saat ini ke
setiap stasiun bahan bakar dan nilai-nilai tersebut disimpan dalam daftar jarak.
 Kemudian, pengguna diminta untuk memasukkan harga bahan bakar di setiap
stasiun dan nilai-nilai tersebut disimpan dalam daftar harga.
 Kode tersebut meminta pengguna untuk memasukkan kapasitas tangki bahan
bakar (kapasitasTangki).
 Fungsi hitungBiaya dipanggil dengan menggunakan nilai input, dan total
biaya dan indeks dari stasiun bahan bakar terdekat yang dikembalikan disimpan
dalam totalBiaya dan indeksStasiun, masing-masing.
 Terakhir, kode tersebut menampilkan indeks dari stasiun bahan bakar terdekat
dan total biaya pengisian bahan bakar menggunakan formatted string.
Screenshot Program

Anda mungkin juga menyukai