#include <iostream>
#include <string>
#include <cctype>
#include <iomanip>
using namespace std;
struct Kamar {
char kode;
string tipe;
double harga;
};
void Garis() {
cout << "--------------------------------------------" << endl;
}
void Judul() {
Garis();
cout << "PENGINAPAN PASTI BETAH" << endl;
Garis();
cout << "List Function" << endl;
Garis();
cout << "1. Function Garis()" << endl;
cout << "2. Function Judul()" << endl;
cout << "3. Function Ketentuan" << endl;
cout << "4. Function TTB()" << 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();
cout << "Harus bisa handle huruf besar dan kecil." << endl;
cout << "Harus menggunakan Struct." << endl;
Garis();
}
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;
Garis();
}
void TTD() {
Garis();
cout << "Nama : Asiyah Thufailah" << endl;
cout << "Email: asiyahtflh@gmail.com" << endl;
Garis();
}
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;
}
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";
}
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();
// Input
cout << "Nama Penyewa \t : <input>" << endl;
getline(cin, nama);
cout << "Kode Kamar [A/B/M] : <input>" << endl;
cin >> kodeKamar;
cout << "Lama Menginap\t : <input>" << endl;
cin >> lamaMenginap;
Garis();
puts ("| Kode | Tipe | Harga |");
Garis();
puts ("| A | Anggrek | 800.000 |");
puts ("| B | Bougenville | 700.000 |");
puts ("| C | Mawar | 600.000 |");
Garis();
// 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 : " << char(toupper(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;
}