Algoritma Tugas 12.1

Run Settings
LanguageC++
Language Version
Run Command
#include <iostream> #include <string> #include <cctype> // untuk toupper() #include <iomanip> // untuk setprecision dan fixed using namespace std; // Struct untuk data kamar struct Kamar { char kode; string tipe; long harga; }; // Struct untuk data penyewaan struct Penyewaan { string nama; char kodeKamar; int lamaMenginap; Kamar kamar; long totalBiaya; bool dapatSouvenir; }; // Deklarasi fungsi void Garis(); void Judul(); void Ketentuan(); void TTQ(); void InfTarif(); Kamar Cek_TipeKamar(char kode); long Cek_Harga(char kode); string Cek_Souvenir(int lamaMenginap); int main() { // Data kamar Kamar kamarA = {'A', "VVIP", 800000}; Kamar kamarB = {'B', "VIP", 700000}; Kamar kamarC = {'C', "EKONOMI", 600000}; // Inisialisasi variabel Penyewaan data; const long biayaAdmin = 200000; // Tampilkan judul dan informasi Judul(); Ketentuan(); TTQ(); // Input data dalam SATU BARIS printf("\nNama Penyewa\t\t: \n"); printf("kode kamar(A/B/C)\t: \n"); printf("lama menginap\t\t: \n"); cin >> data.nama >> data.kodeKamar >> data.lamaMenginap; // Tampilkan tabel tarif setelah input InfTarif(); // Proses data // Konversi kode ke uppercase untuk pengecekan char kodeUpper = toupper(data.kodeKamar); // Cek tipe kamar dan harga data.kamar = Cek_TipeKamar(kodeUpper); // Cek souvenir data.dapatSouvenir = (data.lamaMenginap > 6); // Hitung total biaya data.totalBiaya = (data.kamar.harga * data.lamaMenginap) + biayaAdmin; // Tampilkan hasil cout << "\n"; Garis(); cout << "\nNama Penyewa\t\t: " << data.nama; cout << "\nKode Kamar [A/B/C]\t: " << data.kodeKamar; cout << "\nLama Menginap\t\t: " << data.lamaMenginap << " hari"; cout << "\nHarga Sewa\t\t: Rp. " << fixed << setprecision(2) << (double)data.kamar.harga; cout << "\nTipe Kamar\t\t: " << data.kamar.tipe; cout << "\nSouvenir\t\t: " << Cek_Souvenir(data.lamaMenginap); cout << "\nAdministrasi\t\t: Rp. " << fixed << setprecision(2) << (double)biayaAdmin; cout << "\nTotal Biaya\t\t: Rp. " << fixed << setprecision(2) << (double)data.totalBiaya; cout << "\n"; Garis(); // Informasi developer cout << "\nNama\t: Rendy Wicaksono"; cout << "\nEmail\t: rendywicaksono12@gmail.com\n"; return 0; } void Garis() { cout << "------------------------------------------"; } void Judul() { Garis(); cout << "\nPENGINAPAN ORANG SANTAI\n"; Garis(); } void Ketentuan() { cout << "\nList Function\n"; Garis(); cout << "\n1. Function Garis()"; cout << "\n2. Function Judul()"; cout << "\n3. Function Ketentuan()"; cout << "\n4. Function TTQ()"; cout << "\n5. Function InfTarif()"; cout << "\n6. Function Cek_TipeKamar()"; cout << "\n7. Function Cek_Harga()"; cout << "\n8. Function Cek_Souvenir()\n"; Garis(); } void TTQ() { cout << "\nHarus bisa handle huruf besar dan kecil."; cout << "\nHarus menggunakan Struct.\n"; Garis(); cout << "\nJika lama menginap lebih dari 6 hari maka mendapatkan souvenir Tumbler Besi"; cout << "\nBiaya admin 200.000"; cout << "\nTotal Bayar adalah (Harga dikali Lama Menginap) + Biaya Admin\n"; Garis(); } void InfTarif() { Garis(); cout << "\n| Kode | Tipe | Harga |\n"; Garis(); cout << "\n| A | VVIP | 800.000 |"; cout << "\n| B | VIP | 700.000 |"; cout << "\n| C | EKONOMI | 600.000 |\n"; } Kamar Cek_TipeKamar(char kode) { Kamar kamar; switch(kode) { case 'A': kamar.kode = 'A'; kamar.tipe = "VVIP"; kamar.harga = 800000; break; case 'B': kamar.kode = 'B'; kamar.tipe = "VIP"; kamar.harga = 700000; break; case 'C': kamar.kode = 'C'; kamar.tipe = "EKONOMI"; kamar.harga = 600000; break; default: // Default ke kamar termurah jika kode tidak valid kamar.kode = 'C'; kamar.tipe = "Hydro"; kamar.harga = 600000; } return kamar; } long Cek_Harga(char kode) { Kamar kamar = Cek_TipeKamar(kode); return kamar.harga; } string Cek_Souvenir(int lamaMenginap) { if (lamaMenginap > 6) { return "Tumbler Besi"; } else { return "-"; } }
Editor Settings
Theme
Key bindings
Full width
Lines