Anda di halaman 1dari 6

TUGAS MODUL 6

STACK/TUMPUKAN
Dyah Puteria Wati, M.Kom

Disusun Oleh :

Nama : Imas imaniar


NIM : 20220910019
Kelas : SINFC-2022-03

FAKULTAS ILMU KOMPUTER


PROGRAM STUDI SISTEM INFORMASI
UNIVERSITAS KUNINGAN
2023
Tugas
1. Sebuah Pelabuhan memiliki system dalam mengelola waktu sandar setiap kapal yang
masuk,dengan membatasi jumlah kapal yang masuk maksimal hanya 3 buah kapal saja.
Dalam hal ini system Pelabuhan mengunakan metode stack atau tumpukan untuk
mnenyimpan informasi tentang nomor identitas kapal dan waktu sandar kapal. Saat kapal
baru akan sandar system akan memeriksa apakah jumlah kapal yang sandar sudah mencapai
batas maksimum atau belum. Jika sudah maka kapal baru harus menunggu hingga salah satu
kapal yang sandar selesai sandar dan keluar Pelabuhan, jika belum informasi kapal baru akan
ditambahkan pada tumpukan dan dapat sandar dipelabuhan.
Jawab :
Program
#include <iostream>

#include <stack>

#include <string>

int main() {

std::stack<std::string> kapal;

while (true) {

std::cout << "Jumlah kapal yang sandar: " << kapal.size() << std::endl;

if (kapal.size() == 3) {

std::cout << "Kapal baru harus menunggu hingga ada kapal yang keluar." << std::endl;

} else {

std::string nomor_identitas;

std::cout << "Masukkan nomor identitas kapal baru: ";

std::cin >> nomor_identitas;

kapal.push(nomor_identitas);

std::cout << "Kapal dengan nomor identitas " << nomor_identitas << " berhasil sandar." << std::endl; }

std::string jawaban;

std::cout << "Apakah ada kapal yang keluar? (y/n) ";

std::cin >> jawaban;

if (jawaban == "y") {

if (kapal.empty()) {

std::cout << "Tidak ada kapal yang bisa keluar." << std::endl;

} else {

std::string nomor_identitas = kapal.top();

kapal.pop();
std::cout << "Kapal dengan nomor identitas " << nomor_identitas << " telah keluar." << std::endl;

return 0;

}
Hasil Runnya

Analisis :
Program diatas merupakan program yang sederhana untuk mengelola kapal yang sedang
sandar menggunakan stack. Program ini akan meminta pengguna untuk mengkonfirmasi
apakah ada kapal yang keluar. Jika iya, program akan menghapus kapal teratas dari stack
kapal menggunakan kapal pop(). Jika stack kapal kosong, program akan memberikan pesan
bahwa tidak ada kapal yang bisa keluar. Namun Program ini tidak memiliki cara untuk
menghentikan loop selain dengan menghentikan program secara manual.

2. Kembangkan studi kasus pada nomor 1 studi kasus waktu sandar kapal yang dikembangkan
dengan fitur pemantauan jumlah kapal yang sedang sandar dan memiliki waktu sandar
terpanjang, sistem pemesanan waktu sandar, serta informasi tambahan tentang kapal.
Jawab :
Program
#include <iostream>

#include <stack>

#include <string>

#include <map>

struct Kapal {

std::string nomor_identitas;

int waktu_sandar;
};

int main() {

std::stack<Kapal> kapal;

std::map<std::string, int> waktu_sandar_terpanjang;

std::map<std::string, std::string> informasi_tambahan;

while (true) {

std::cout << "Jumlah kapal yang sedang sandar: " << kapal.size() << std::endl;

if (kapal.size() == 3) {

std::cout << "Kapal baru harus menunggu hingga ada kapal yang keluar." << std::endl;

} else {

std::string nomor_identitas;

int waktu_sandar;

std::cout << "Masukkan nomor identitas kapal baru: ";

std::cin >> nomor_identitas;

std::cout << "Masukkan waktu sandar kapal (dalam menit): ";

std::cin >> waktu_sandar;

Kapal new_kapal;

new_kapal.nomor_identitas = nomor_identitas;

new_kapal.waktu_sandar = waktu_sandar;

kapal.push(new_kapal);

std::cout << "Kapal dengan nomor identitas " << nomor_identitas << " berhasil sandar." << std::endl;

// Update informasi waktu sandar terpanjang

if (waktu_sandar_terpanjang.count(nomor_identitas) == 0 || waktu_sandar >


waktu_sandar_terpanjang[nomor_identitas]) {

waktu_sandar_terpanjang[nomor_identitas] = waktu_sandar;

// Input informasi tambahan

std::string informasi;

std::cout << "Masukkan informasi tambahan tentang kapal: ";

std::cin.ignore(); // Clear the input buffer


if (kapal.empty()) {
std::getline(std::cin, informasi);
std::cout << "Tidak ada kapal yang bisa
informasi_tambahan[nomor_identitas] keluar." << std::endl;
= informasi;

}} else {
Kapal kapal_keluar
std::string jawaban; = kapal.top();
kapal.pop();
std::cout << "Apakah ada kapal yang keluar? (y/n) ";
std::cout
std::cin << "Kapal dengan nomor identitas " << kapal_keluar.nomor_identitas << " telah keluar."
>> jawaban;
<< std::endl; }
if (jawaban == "y" || jawaban == "Y") {
}
Hasil Runnya
Analisis :
Program diatas memiliki kode yang digunakan dibeberapa struktur data, yaitu std::stack
untuk menyimpan kapal yang sedang sandar, std::map untuk menyimpan informasi waktu
sandar terpanjang dan informasi tambahan tentang kapal. Kemudian Program akan meminta
pengguna untuk mengkonfirmasi apakah ingin melihat informasi tambahan tentang kapal.
Jika iya, program akan meminta nomor identitas kapal dan menampilkan informasi tambahan
yang terkait dengan kapal tersebut.

Anda mungkin juga menyukai