Untitled

Run Settings
LanguageC++
Language Version
Run Command
#include <iostream> #include <string> #include <cctype> #include <limits> using namespace std; // Fungsi untuk menampilkan judul void judul() { cout << "=============================================================================" << endl; cout << "PROGRAM PEMESANAN KERETA " << endl; cout << "=============================================================================" << endl; cout << "| Kelas | AG(Argo Bromo) | AL(Argo Lawu) | PH(Argo Wilis) |" <<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; } void penutup() { cout << "=============================================================================" <<endl; cout << "Nama : Nagita Elsa Saputri" <<endl; cout << "Email : nagitaelsa39@gmail.com" <<endl; } // Fungsi untuk mengecek dan mengembalikan harga tiket double cekHarga(string kodeKereta, int kodeKelas) { double harga = 0; kodeKereta = toupper(kodeKereta[0]); // Mengubah ke huruf besar if (kodeKelas < 1 || kodeKelas > 3) return -1; // Kode kelas salah if (kodeKereta == "A") { // Argo Bromo switch (kodeKelas) { case 1: harga = 500000; break; case 2: harga = 480000; break; case 3: harga = 460000; break; } } else if (kodeKereta == "L") { // Argo Lawu switch (kodeKelas) { case 1: harga = 475000; break; case 2: harga = 455000; break; case 3: harga = 435000; break; } } else if (kodeKereta == "P") { // Argo Wilis switch (kodeKelas) { case 1: harga = 450000; break; case 2: harga = 438000; break; case 3: harga = 418000; break; } } else { return -1; // Kode kereta salah } return harga; } // Fungsi untuk menghitung diskon double cekDiskon(double subtotal) { if (subtotal > 1000000) return subtotal * 0.10; // Diskon 10% if (subtotal > 500000) return subtotal * 0.05; // Diskon 5% return 0; // Tidak ada diskon } int main() { judul(); string namaPemesan, kodeKereta; int kodeKelas, jumlahTiket; double hargaTiket, subtotal, diskon, total; cout << "Nama Pemesan: "; getline(cin >> ws, namaPemesan); // Menggunakan getline untuk menangani spasi pada nama cout << "Masukan Kode Kereta [AG/AL/PH]: "; cin >> kodeKereta; cout << "Masukan Kode Kelas [1/2/3]: "; cin >> kodeKelas; // Validasi input untuk jumlah tiket (harus bilangan bulat positif) while (!(cin >> jumlahTiket) || jumlahTiket <=0) { cout << "Input salah. Masukkan jumlah tiket (bilangan bulat positif): "; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); } hargaTiket = cekHarga(kodeKereta, kodeKelas); if (hargaTiket == -1) { cout << "Kode Kereta atau Kode Kelas Salah!" << endl; return 1; // Menunjukkan error } subtotal = hargaTiket * jumlahTiket; diskon = cekDiskon(subtotal); total = subtotal - diskon; cout << "\nDATA PEMESANAN KERETA" << endl; cout << "Nama Pemesan: " << namaPemesan << endl; cout << "Kode Kereta: " << kodeKereta << endl; cout << "Kode Kelas: " << kodeKelas << endl; cout << "Nama Kereta: "; // Menampilkan nama kereta berdasarkan kode kereta (diperbaiki) if (kodeKereta == "A" || kodeKereta == "a") cout << "Argo Bromo" << endl; else if (kodeKereta == "L" || kodeKereta == "l") cout << "Argo Lawu" << endl; else if (kodeKereta == "P" || kodeKereta == "p") cout << "Argo Wilis" << endl; cout << "Nama Kelas: "; // Menampilkan nama kelas berdasarkan kode kelas (diperbaiki) if (kodeKelas == 1) cout << "Executive" << endl; else if (kodeKelas == 2) cout << "Bisnis" << endl; else cout << "Ekonomi" << endl; cout << "Harga Tiket: " << hargaTiket << endl; cout << "Jumlah Beli: " << jumlahTiket << endl; cout << "Subtotal: " << subtotal << endl; cout << "Diskon: " << diskon << endl; cout << "Total: " << total << endl; }
Editor Settings
Theme
Key bindings
Full width
Lines