Quick actions

cmd+k|ctrl+k

Navigation

Languages

UTS Algoritma Dan Struktur Data - Ananda Rakhma Au

Snippet info

Language

Cpp

Visibility

public

Author

anandara7891

Created

2025-11-22T12:28:24.118952Z

Updated

2025-11-22T12:40:53.753677Z

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