Quick actions

cmd+k|ctrl+k

Navigation

Languages

Algoritma Tugas 12.1

Snippet info

Language

Cpp

Visibility

public

Author

rendywicaksono892

Created

2025-12-27T05:08:33.176736Z

Updated

2026-01-03T06:03:33.372396Z

#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: [email protected]\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 "-";
    }
}
INFO