Thursday, 11 July 2024

Program Perbaikan UAS 2

 #include <iostream>

#include <string>

#include <iomanip>

#include <cmath>

using namespace std;


bool cekPrima(int num) {

    if (num <= 1) return false;

    for (int i = 2; i <= sqrt(num); i++) {

        if (num % i == 0) return false;

    }

    return true;

}


string bonusIf(int totalPembelian) {

    if (totalPembelian >= 100000 && totalPembelian < 200000) return "Discount 5%";

    else if (totalPembelian >= 200000 && totalPembelian < 300000) return "Tiket ke Yogya";

    else if (totalPembelian >= 300000 && totalPembelian < 400000) return "Tiket ke Bali";

    else if (totalPembelian >= 400000 && totalPembelian < 500000) return "Jam tangan Rolex";

    else if (totalPembelian >= 500000) return "Tiket ke Swiss";

    else return "Tidak ada bonus";

}



string bonusCase(int totalPembelian) {

    switch (totalPembelian / 100000) {

        case 5: return "Tiket ke Swiss";

        case 4: 

            if (totalPembelian >= 400000) return "Jam tangan Rolex";

            else return "Tiket ke Bali";

        case 3: return "Tiket ke Bali";

        case 2: return "Tiket ke Yogya";

        case 1: 

            if (totalPembelian >= 100000) return "Discount 5%";

            else return "Tidak ada bonus";

        default: return "Tidak ada bonus";

    }

}


int main() {

    string password, inputPassword;


    cout << "Masukkan password: ";

    cin >> inputPassword;


    if (inputPassword != "password") {

        cout << "Password salah. Silakan coba lagi." << endl;

        return 0;

    }


    int pilihan;

    do {

        cout << "Pilih program yang ingin dijalankan: " << endl;

        cout << "1. Program 1 (Cek Prima)" << endl;

        cout << "2. Program 2 (Bonus Pembelian metode IF dan CASE)" << endl;

        cout << "3. Program 3 (Diskon Belanja)" << endl;

        cout << "4. Program 4 (Pembayaran Semester)" << endl;

        cout << "5. Program 5 (Nota Pembelian)" << endl;

        cout << "6. Exit" << endl;

        cout << "Masukkan pilihan Anda: ";

        cin >> pilihan;


        switch (pilihan) {

            case 1: {

                struct Bilangan {

        int nilai;

        string status;

    };


    int awal, akhir;


    

    cout << "Masukkan nilai awal dari rentang: ";

    cin >> awal;

    cout << "Masukkan nilai akhir dari rentang: ";

    cin >> akhir;


    

    int jumlahBilangan = akhir - awal + 1;

    Bilangan bilangan[jumlahBilangan];


    

    for (int i = 0; i < jumlahBilangan; i++) {

        bilangan[i].nilai = awal + i;

        if (cekPrima(bilangan[i].nilai))

            bilangan[i].status = "Prima";

        else

            bilangan[i].status = "Bukan Prima";

    }


    cout << "\nHasil Pengecekan Bilangan dari " << awal << " hingga " << akhir << ":\n";

    cout << "+----------+-------------+\n";

    cout << "| Bilangan | Status      |\n";

    cout << "+----------+-------------+\n";

    for (int i = 0; i < jumlahBilangan; i++) {

        cout << "| " << setw(8) << bilangan[i].nilai << " | " << setw(11) << bilangan[i].status << " |\n";

    }

    cout << "+----------+-------------+\n";

                break;

            }

            case 2: {

              struct Pelanggan {

        string NIK;

        string nama;

        string alamat;

        int umur;

        int totalPembelian;

        string bonusIf;

        string bonusCase;

    };


    int jumlahPelanggan;

    cout << "Masukkan jumlah pelanggan: ";

    cin >> jumlahPelanggan;

    cin.ignore();  

    

    Pelanggan* pelanggan = new Pelanggan[jumlahPelanggan];


   

    for (int i = 0; i < jumlahPelanggan; i++) {

        cout << "Masukkan data pelanggan ke-" << i + 1 << endl;

        cout << "Masukkan NIK: ";

        getline(cin, pelanggan[i].NIK);  


        cout << "Masukkan nama: ";

        getline(cin, pelanggan[i].nama);


        cout << "Masukkan alamat: ";

        getline(cin, pelanggan[i].alamat);


        cout << "Masukkan umur: ";

        cin >> pelanggan[i].umur;


        cout << "Masukkan total pembelian: ";

        cin >> pelanggan[i].totalPembelian;


        cin.ignore();  


        

        pelanggan[i].bonusIf = bonusIf(pelanggan[i].totalPembelian);

        pelanggan[i].bonusCase = bonusCase(pelanggan[i].totalPembelian);

    }


    

    cout << "\n+-------+-----------------+-----------------+------+-----------------+---------------------+---------------------+\n";

    cout << "| NIK   | Nama            | Alamat          | Umur | Total Pembelian | Bonus (if-else)     | Bonus (case)         |\n";

    cout << "+-------+-----------------+-----------------+------+-----------------+---------------------+---------------------+\n";


    for (int i = 0; i < jumlahPelanggan; i++) {

        cout << " | " << setw(5) << pelanggan[i].NIK 

             << " | " << setw(15) << pelanggan[i].nama

             << " | " << setw(15) << pelanggan[i].alamat

             << " | " << setw(4) << pelanggan[i].umur

             << " | " << setw(15) << pelanggan[i].totalPembelian

             << " | " << setw(17) << pelanggan[i].bonusIf

             << " | " << setw(17) << pelanggan[i].bonusCase

             << " |\n";

    }

    cout << "+-------+-----------------+-----------------+------+-----------------+---------------------+---------------------+\n";

break;

            }

            case 3: {

                   struct Item {

        string nama;

        int harga;

        float diskon;

        float hargaSetelahDiskon;

    };


   

    Item belanjaan[2];


   

    belanjaan[0] = {"Baju", 100000, 0.25, 0};  

    belanjaan[1] = {"Celana", 100000, 0.55, 0};  


    

    for (int i = 0; i < 2; i++) {

        belanjaan[i].hargaSetelahDiskon = belanjaan[i].harga - (belanjaan[i].harga * belanjaan[i].diskon);

    }


    

    float totalBelanja = 0;

    for (int i = 0; i < 2; i++) {

        totalBelanja += belanjaan[i].hargaSetelahDiskon;

    }


   

    cout << "\n+-------+---------+----------------+------------------------+\n";

    cout << "| Nama  | Harga   | Diskon         | Harga Setelah Diskon  |\n";

    cout << "+-------+---------+----------------+------------------------+\n";

    for (int i = 0; i < 2; i++) {

        cout << "| " << setw(5) << belanjaan[i].nama 

             << " | " << setw(6) << belanjaan[i].harga 

             << " | " << setw(7) << (belanjaan[i].diskon * 100) << "%" 

             << " | " << setw(22) << fixed << setprecision(2) << belanjaan[i].hargaSetelahDiskon 

             << " |\n";

    }

    cout << "+-------+---------+----------------+------------------------+\n";

    cout << "Total belanja Oni setelah diskon adalah: Rp" << fixed << setprecision(2) << totalBelanja << endl;

                break;

            }

            case 4: {

               struct Pembayaran {

        int semester;

        int biayaSPP;

        int biayaPembangunan;

        int biayaPerSKS;

        int jumlahSKS;

        int totalBiaya;

    };


    Pembayaran pembayaran[3];


    // Inisialisasi data biaya tetap

    pembayaran[0] = {1, 3000000, 5000000, 250000, 0, 0}; // Semester 1

    pembayaran[1] = {2, 3000000, 0, 250000, 0, 0};       // Semester 2

    pembayaran[2] = {3, 3000000, 0, 250000, 0, 0};       // Semester 3


    // Meminta input jumlah SKS dari pengguna

    for (int i = 0; i < 3; i++) {

        cout << "Masukkan jumlah SKS untuk semester " << pembayaran[i].semester << ": ";

        cin >> pembayaran[i].jumlahSKS;


        // Menghitung total biaya untuk tiap semester

        pembayaran[i].totalBiaya = pembayaran[i].biayaSPP +

                                   pembayaran[i].biayaPembangunan +

                                   (pembayaran[i].biayaPerSKS * pembayaran[i].jumlahSKS);

    }


    // Menghitung total biaya keseluruhan

    int totalBiayaKeseluruhan = 0;

    for (int i = 0; i < 3; i++) {

        totalBiayaKeseluruhan += pembayaran[i].totalBiaya;

    }


    // Menampilkan slip pembayaran dalam bentuk tabel

    cout << "\nSlip Pembayaran Mahasiswa Selama Tiga Semester\n";

    cout << "---------------------------------------------\n";

    cout << "+----------+-----------+-------------------+---------------+------------+-------------+\n";

    cout << "| Semester | Biaya SPP | Biaya Pembangunan | Biaya per SKS | Jumlah SKS | Total Biaya |\n";

    cout << "+----------+-----------+-------------------+---------------+------------+-------------+\n";

    for (int i = 0; i < 3; i++) {

        cout << "| " << setw(8) << pembayaran[i].semester

             << " | " << setw(10) << pembayaran[i].biayaSPP

             << " | " << setw(15) << pembayaran[i].biayaPembangunan

             << " | " << setw(12) << pembayaran[i].biayaPerSKS

             << " | " << setw(9) << pembayaran[i].jumlahSKS

             << " | " << setw(11) << pembayaran[i].totalBiaya

             << " |\n";

    }

    cout << "+----------+-----------+-------------------+---------------+------------+-------------+\n";

    cout << "Total Biaya Keseluruhan: Rp" << totalBiayaKeseluruhan << ",00" << endl;

                break;

            }

            case 5: {

               struct Barang {

        string nama;

        int harga;

        int jumlah;

        int totalHarga;

        double ppn;

        double totalSetelahPPN;

    };


   

    int jumlahBarang;

    cout << "Masukkan jumlah barang yang akan dibeli: ";

    cin >> jumlahBarang;


    

    Barang barang[jumlahBarang];


    

    for (int i = 0; i < jumlahBarang; i++) {

        cout << "Masukkan nama barang ke-" << i + 1 << ": ";

        cin.ignore();  

        getline(cin, barang[i].nama);

        cout << "Masukkan harga barang ke-" << i + 1 << ": ";

        cin >> barang[i].harga;

        cout << "Masukkan jumlah barang ke-" << i + 1 << ": ";

        cin >> barang[i].jumlah;


        

        barang[i].totalHarga = barang[i].harga * barang[i].jumlah;

        barang[i].ppn = barang[i].totalHarga * 0.10;

        barang[i].totalSetelahPPN = barang[i].totalHarga + barang[i].ppn;

    }


    

    cout << "\nNota Pembelian\n";

    cout << "---------------------------------------------\n";

    cout << "+---------------+-------------+--------+--------------+--------+-------------------+\n";

    cout << "| Nama Barang   | Harga Satuan | Jumlah | Total Harga  | PPN    | Total Setelah PPN |\n";

    cout << "+---------------+-------------+--------+--------------+--------+-------------------+\n";

    for (int i = 0; i < jumlahBarang; i++) {

        cout << "| " << setw(13) << left << barang[i].nama 

             << " | " << setw(11) << right << barang[i].harga 

             << " | " << setw(6) << right << barang[i].jumlah 

             << " | " << setw(12) << right << barang[i].totalHarga 

             << " | " << setw(6) << right << fixed << setprecision(2) << barang[i].ppn 

             << " | " << setw(17) << right << fixed << setprecision(2) << barang[i].totalSetelahPPN 

             << " |\n";

    }

    cout << "+---------------+-------------+--------+--------------+--------+-------------------+\n";

                break;

            }

            case 6: {

                cout << "Terima kasih!" << endl;

                break;

            }

            default: {

                cout << "Pilihan tidak valid." << endl;

                break;

            }

        }

    } while (pilihan != 6);


    return 0;

}

No comments:

Post a Comment