#include <iostream>
#include <string.h>
#include <iomanip>
// UAS Algoritma Dan Struktur Data
//Ananda Rakhma Aulia - 3420220024
using namespace std;
void garis(int p) {
int i = 0;
while (i < p) {
cout<<"="; i++;} cout<<endl; // (<- looping while)
}
string formatRupiah(long nominal) {
string angka = to_string(nominal);
int n = angka.length();
int hitung = 0;
string hasil = "";
for (int i = n - 1; i >= 0; i--) {
hasil = angka[i] + hasil;
hitung++;
if (hitung % 3 == 0 && i != 0) {
hasil = "." + hasil;
}
}
return hasil;
}
struct {
int jml;
string nama;
} structKasir; //(<- struct function)
void author(string nama, string nim, string email) {
garis(40);
cout<<"Nama : "<<nama<<endl; //(<- cout function)
cout<<"NIM : "<<nim<<endl; //(<- cout function)
cout<<"Email : "<<email<<endl; //(<- cout function)
}
void judul() {
garis(40);
puts("FLOWERS HOTEL"); //(<- puts function)
puts("Jl. Raya Hankam Jatirahayu Bekasi"); //(<- puts function)
garis(40); //(<-function NOT return value without parameter)
}
void ketentuan() {
puts("| Kelas | Nama Kelas | Biaya Per Malam |");
garis(40);
puts("| 1 | VIP | Rp. 1.000.000 |");
puts("| 2 | Reguler | Rp. 800.000 |");
puts("| 3 | Ekonomi | Rp. 600.000 |");
garis(40);
puts("| Kode Kamar | Nama Kamar |");
garis(40);
puts("| E | Edelweiss |");
puts("| M | Magnolia |");
puts("| O | Orchid |");
garis(40);
cout<<"KETENTUAN"<<endl;
garis(40);
puts("Harus Terdapat:");
puts("fungsi STRUCT.");
puts("fungsi cout, cin, endl, printf, scanf.");
puts("function return value dengan parameter.");
puts("function return value TANPA parameter.");
puts("function NOT return value dengan parameter.");
puts("function NOT return value TANPA parameter.");
puts("function yang memanggil function lain.");
puts("variable bertipe array.");
puts("struktur IF.");
puts("struktur SWITCH CASE.");
puts("looping while dan looping for.");
puts("Class dengan Variable Private.");
puts("Class dengan Prototipe Function.");
garis(65);
puts("Subtotal adalah Harga Per Malam x Lama Menginap.");
puts("Diskon 10% dari Subtotal jika Lama Menginap lebih dari 10 hari.");
puts("Diskon 5% dari Subtotal jika Lama Menginap lebih dari 5 hari.");
garis(65);
}
class penyewa {
private:
string nama;
char kd_kelas, kd_kamar;
int lama; //(<- class with variable private function)
public:
void set_nilai(string nm, char kdKelas, char kdKamar, int lm); //(<- class with prototipe function)
string get_nama() {
return nama;
}
string get_kelas(); //(<- class with prototipe function)
string get_kamar(); //(<- class with prototipe function)
long get_harga(); //(<- class with prototipe function)
int get_lama() {
return lama;
}
};
void penyewa::set_nilai(string nm, char kdKelas, char kdKamar, int lm) {
nama = nm; kd_kelas = kdKelas; kd_kamar = kdKamar; lama = lm;
}
// if else structure
string penyewa::get_kelas() {
if (kd_kelas == '1') {
return "VIP";
} else if (kd_kelas == '2') {
return "REGULER";
} else if (kd_kelas == '3') {
return "EKONOMI";
} else {
return "";
}
}
// switch case structure
string penyewa::get_kamar() {
switch (kd_kamar) {
case 'E': case 'e':
return "EDELWEISS";
break;
case 'M': case 'm':
return "MAGNOLIA";
break;
case 'O': case 'o':
return "ORCHID";
break;
default:
return "";
break;
}
}
long penyewa::get_harga() {
if (kd_kelas == '1') {
return 1000000;
} else if (kd_kelas == '2') {
return 800000;
} else if (kd_kelas == '3') {
return 600000;
} else {
return 0;
}
} //(<- function return value without parameter)
long subtotal(int lama, long harga) {
return lama * harga;
} //(<- function return value with parameter)
long hitung_tobay(long subtotal, long diskon) {
return subtotal - diskon;
} //(<- function return value with parameter)
long hitung_diskon(long subtotal, int lama) {
if(lama > 10) {
return 0.1 * subtotal;
} else if(lama > 5) {
return 0.05 * subtotal;
} else {
return 0;
}
}
int main() {
judul();
ketentuan();
cout<<endl;
printf("Input Nama Kasir : <input>"); //(<- printf function)
cin>>structKasir.nama;cout<<endl; //(<- cin function)
printf("Jumlah Data : <input>");
scanf("%d", &structKasir.jml);cout<<endl<<endl; //(<- scanf function)
int i, lama_sewa;
string nama;
char kodekelas, kodekamar;
penyewa objpenyewa[10]; //(<- variabel bertipe array)
for(i=1;i<=structKasir.jml;i++) {
printf("Data Ke - %d",i); cout<<endl;
printf("Nama Penyewa : <input>"); cin>>nama; cout<<endl;
printf("Kode Kelas [1/2/3] : <input>"); cin>>kodekelas; cout<<endl;
printf("Kode Kamar [E/M/O] : <input>"); cin>>kodekamar; cout<<endl;
printf("Lama Sewa : <input>"); cin>>lama_sewa; cout<<endl;
objpenyewa[i].set_nilai(nama, kodekelas, kodekamar, lama_sewa);
cout<<endl; //(<- looping for)
}
judul();
cout<<"Nama Kasir : "<<structKasir.nama<<endl;
cout<<"Jumlah Data : "<<structKasir.jml<<endl;
garis(94);
cout<<"| No | Nama Penyewa | Kelas | Kamar | Harga | Lama |";
cout<<" Subtotal| Diskon | Total Bayar |"<<endl;
garis(94);
long grand_total = 0;
for(i=1;i<=structKasir.jml;i++) {
cout<<"| "<<setiosflags(ios::left)<<setw(3)<<i;
cout<<"| "<<setw(13)<<objpenyewa[i].get_nama();
cout<<"| "<<setw(8)<<objpenyewa[i].get_kelas();
cout<<"| "<<setw(10)<<objpenyewa[i].get_kamar();
long harga = objpenyewa[i].get_harga();
cout<<"| "<<setw(8)<<harga;
int lama = objpenyewa[i].get_lama();
cout<<"| "<<setw(5)<<lama;
long subttl = subtotal(harga, lama);
cout<<"| "<<setw(8)<<subttl;
long diskon = hitung_diskon(subttl, lama);
cout<<"| "<<setw(8)<<diskon;
long tobay = hitung_tobay(subttl, diskon);
cout<<"| "<<setw(12)<<tobay<<"|";
grand_total = grand_total + tobay;
cout<<endl;
}
garis(94);
cout<<"GRAND TOTAL: Rp"<<formatRupiah(grand_total)<< endl;
author("Ananda Rakhma Aulia","3420220024","anandara7891@gmail.com");
return 0;
}