Quick actions

cmd+k|ctrl+k

Navigation

Languages

Tugas 12.1

Snippet info

Language

Cpp

Visibility

public

Author

muhammadirfanzidni801

Created

2025-01-04T08:14:36.690838Z

Updated

2025-01-04T08:14:36.690838Z

#include <iostream>
#include <string>
#include <cctype>
#include <iomanip> 
using namespace std;

    //NAMA      : Muhammad Irfan Zidni
    //NIM       : 3420230014
    //TUGAS     : 12.1
    
struct Kamar {
    char kode;
    string tipe;
    double harga;
};

//Fungsi garis
void garis(int a){
    int i;
    for(i=1;i<=a;i++){printf("-"); }
    printf("\n");
}

//Fungsi Judul
void Judul() {
    garis(40);
    puts("\tPENGINAPAN SEJAHTERA");
    garis(40);
    cout<<"List Function"<<endl;
    garis(40);
    cout<<"1. Function Garis()"<<endl;
    cout<<"2. Function Judul()"<<endl;
    cout<<"3. Function Ketentuan()"<<endl;
    cout<<"4. Function TTD()"<<endl;
    cout<<"5. Function Tarif()"<<endl;
    cout<<"6. Function Cek_Tipe()"<<endl;
    cout<<"7. Function Cek_Harga()"<<endl;
    cout<<"8. Function Cek_Souvenir()"<<endl;
    garis(40);
    cout<<"Harus bisa handle huruf besar dan kecil."<<endl;
    cout<<"Harus Menggunakan Struct."<<endl;
    garis(40);

}

//Fungsi Ketentuan
void Ketentuan() {
    cout << "Jika lama menginap lebih dari 6 hari maka mendapatkan souvenir Payung Cantik" << endl;
    cout << "Biaya admin 200.000" << endl;
    cout << "Total Bayar adalah (Harga dikali Lama Menginap) + Biaya Admin" << endl;
}
//Fungsi TTD
void TTD() {
    garis(40);
    cout << "Nama : Muhammad Irfan Zidni" << endl;
    cout << "Email: [email protected]" << endl;
}

//Fungsi infoTarif
void infoTarif(){
    garis(40);
    cout<<"| Kode | Tipe            | Harga     |"<<endl;
    garis(40);
    cout<<"| A    | Anggrek         | 800.000   |"<<endl;
    cout<<"| B    | Bougenville     | 700.000   |"<<endl;
    cout<<"| C    | Mawar           | 600.000   |"<<endl;
    garis(40);
}

double Tarif(char kodeKamar) {
    switch (kodeKamar) {
        case 'A': case 'a': return 800000;
        case 'B': case 'b': return 700000;
        case 'C': case 'c': return 600000;
        default: return 0;
    }
}

//Fungsi Cek Tipe
string Cek_Tipe(char kode, const Kamar kamar[], int n) {
    kode = tolower(kode);
    for (int i = 0; i < n; i++) {
        if (tolower(kamar[i].kode) == kode) {
            return kamar[i].tipe;
        }
    }
    return "Tidak Diketahui";
}

//Fungsi Cek Harga
double Cek_Harga(char kode, const Kamar kamar[], int n) {
    kode = tolower(kode);
    for (int i = 0; i < n; i++) {
        if (tolower(kamar[i].kode) == kode) {
            return kamar[i].harga;
        }
    }
    return 0;
}

//Fungsi Cek Souvennir
string Cek_Souvenir(int lamaMenginap) {
    return (lamaMenginap > 6) ? "Payung Cantik" : "Tidak Ada";
}

int main() {
    Kamar kamar[] = {
        {'A', "Anggrek", 800000},
        {'B', "Bougenville", 700000},
        {'C', "Mawar", 600000}
};

    const int n = sizeof(kamar) / sizeof(kamar[0]);
    string nama;
    char kodeKamar;
    int lamaMenginap;

    Judul();
    Ketentuan();
    garis(40);
    
    // Input
    cout << "Nama Penyewa   \t  : <input>\n";
    cin >> nama;
    cout << "Kode Kamar [A/B/M]: <input>\n";
    cin >> kodeKamar;
    cout << "Lama Menginap  \t  : <input>\n";
    cin >> lamaMenginap;
    infoTarif();
    
    
    // Proses
    double hargaSewa = Cek_Harga(kodeKamar, kamar, n);
    string tipeKamar = Cek_Tipe(kodeKamar, kamar, n);
    string souvenir = Cek_Souvenir(lamaMenginap);
    double administrasi = 200000;
    double totalBiaya = (hargaSewa * lamaMenginap) + administrasi;

    // Output
    cout << "Nama Penyewa      : " << nama << endl;
    cout << "Kode Kamar        : " << kodeKamar << endl;
    cout << "Lama Menginap     : " << lamaMenginap << " hari" << endl;
    cout << "Harga Sewa        : Rp." << fixed << setprecision(2) << hargaSewa << endl;
    cout << "Tipe Kamar        : " << tipeKamar << endl;
    cout << "Souvenir          : " << souvenir << endl;
    cout << "Administrasi      : Rp." << administrasi << endl;
    cout << "Total Biaya       : Rp." << totalBiaya << endl;
    TTD();

    return 0;
}
INFO