STACK/TUMPUKAN
Dyah Puteria Wati, M.Kom
Disusun Oleh :
#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;
kapal.push(nomor_identitas);
std::cout << "Kapal dengan nomor identitas " << nomor_identitas << " berhasil sandar." << std::endl; }
std::string jawaban;
if (jawaban == "y") {
if (kapal.empty()) {
std::cout << "Tidak ada kapal yang bisa keluar." << std::endl;
} else {
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;
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;
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;
waktu_sandar_terpanjang[nomor_identitas] = waktu_sandar;
std::string 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.