#include <iostream>
#include <string>
#include <iomanip>
// Ananda Rakhma Aulia
// 3420220024
// UTS Algoritma dan Struktur Data
using namespace std;
void JUDUL();
long CEK_HARGA(string kodeKereta, int kodeKelas);
string CEK_NAMA_KERETA(string kodeKereta);
string CEK_KELAS(int kodeKelas);
long CEK_DISKON(long subtotal, int jumlahBeli);
int main() {
string namaPemesanan;
string kodeKereta;
int kodeKelas;
int jumlahBeli;
cin >> namaPemesanan >> kodeKereta >> kodeKelas >> jumlahBeli;
JUDUL();
cout << "Nama Pemesan : " << namaPemesanan << endl;
cout << "Masukan Kode Kereta [AG/AL/PH]: " << kodeKereta << endl;
cout << "Masukan Kode Kelas [1/2/3] : " << kodeKelas << endl;
for (auto & c: kodeKereta) c = toupper(c);
bool inputValid = true;
if (kodeKereta != "AG" && kodeKereta != "AL" && kodeKereta != "PH") {
cout << "\nKode Kereta Salah!" << endl;
inputValid = false;
}
if (kodeKelas < 1 || kodeKelas > 3) {
cout << "\nKode Kelas Salah!" << endl;
inputValid = false;
}
if (inputValid) {
long hargaTiket = CEK_HARGA(kodeKereta, kodeKelas);
string namaKereta = CEK_NAMA_KERETA(kodeKereta);
string namaKelas = CEK_KELAS(kodeKelas);
long subtotal = hargaTiket * jumlahBeli;
long diskon = CEK_DISKON(subtotal, jumlahBeli);
long totalBayar = subtotal - diskon;
cout << "----------------------------------------------------------------------" << endl;
cout << "DATA PEMESANAN KERETA" << endl;
cout << "----------------------------------------------------------------------" << endl;
cout << "Nama Pemesan : " << namaPemesanan << endl;
cout << "Kode Kereta : " << kodeKereta << endl;
cout << "Kode Kelas : " << kodeKelas << endl;
cout << "Nama Kereta : " << namaKereta << endl;
cout << "Nama Kelas : " << namaKelas << endl;
cout << "Harga Tiket : " << hargaTiket << endl;
cout << "Jumlah Beli : " << jumlahBeli << endl;
cout << fixed << setprecision(2);
cout << "Subtotal : " << (double)subtotal << endl;
cout << "Diskon : " << (double)diskon << endl;
cout << "Total : " << (double)totalBayar << endl;
cout << "----------------------------------------------------------------------" << endl;
cout << "Nama : Ananda Rakhma Aulia" << endl;
cout << "NIM : 3420220024" << endl;
cout << "Email : anandara7891@gmail.com" << endl;
}
return 0;
}
void JUDUL() {
cout << "----------------------------------------------------------------------" << endl;
cout << "PROGRAM TIKET KERETA" << endl;
cout << "----------------------------------------------------------------------" << endl;
cout << "| Kelas | AG(Argo Bromo) | AL(Argo Lawu) | PH(Argo Wilis) |" << endl;
cout << "----------------------------------------------------------------------" << endl;
cout << "| 1-Executive | 500.000 | 475.000 | 450.000 |" << endl;
cout << "| 2-Bisnis | 480.000 | 455.000 | 430.000 |" << endl;
cout << "| 3-Ekonomi | 460.000 | 435.000 | 410.000 |" << endl;
cout << "----------------------------------------------------------------------" << endl;
cout << "Ketentuan Discount:" << endl;
cout << "Apabila pembelian tiket diatas 10 maka diskon 10% dari Total" << endl;
cout << "Apabila pembelian tiket diatas 5 maka diskon 5% dari Total" << endl;
cout << "----------------------------------------------------------------------" << endl;
cout << "Ketentuan Salah Input:" << endl;
cout << "Jika input Kode Kereta ATAU Kode Kelas salah maka muncul pesan." << endl;
cout << "----------------------------------------------------------------------" << endl;
cout << "Ketentuan Kondisi:" << endl;
cout << "Program harus menggunakan switch case dan if else." << endl;
cout << "Harus ada fungsi JUDUL." << endl;
cout << "Harus ada fungsi CEK_HARGA." << endl;
cout << "Harus ada fungsi CEK_NAMA_KERETA." << endl;
cout << "Harus ada fungsi CEK_KELAS." << endl;
cout << "Harus ada fungsi CEK_DISKON." << endl;
cout << "Harus bisa handle input huruf besar dan kecil." << endl;
cout << "----------------------------------------------------------------------" << endl;
}
string CEK_NAMA_KERETA(string kodeKereta) {
if (kodeKereta == "AG") return "Argo Bromo";
else if (kodeKereta == "AL") return "Argo Lawu";
else if (kodeKereta == "PH") return "Argo Wilis";
return "-";
}
string CEK_KELAS(int kodeKelas) {
switch (kodeKelas) {
case 1: return "Executive";
case 2: return "Bisnis";
case 3: return "Ekonomi";
default: return "-";
}
}
long CEK_HARGA(string kodeKereta, int kodeKelas) {
if (kodeKereta == "AG") { // Argo Bromo
switch (kodeKelas) {
case 1: return 500000;
case 2: return 480000;
case 3: return 460000;
}
} else if (kodeKereta == "AL") { // Argo Lawu
switch (kodeKelas) {
case 1: return 475000;
case 2: return 455000;
case 3: return 435000;
}
} else if (kodeKereta == "PH") { // Argo Wilis
switch (kodeKelas) {
case 1: return 450000;
case 2: return 430000;
case 3: return 410000;
}
}
return 0;
}
long CEK_DISKON(long subtotal, int jumlahBeli) {
if (jumlahBeli > 10) {
return subtotal * 0.10; // utk diskon 10%
} else if (jumlahBeli > 5) {
return subtotal * 0.05; // utk diskon 5%
} else {
return 0;
}
}