Contoh Program C++ Menghitung Total Pembayaran dan Diskon Sederhana

| | | C dan C++
Contoh Program C++ Menghitung Total Pembayaran dan Diskon Sederhana

Program menghitung total pembayaran dan diskon itu salah satu latihan dasar yang paling sering dicari saat belajar C++. Lewat program ini kamu sekaligus belajar input/output, variabel, operator aritmatika, dan percabangan if. Dulu pas pertama belajar, saya buat versi simpel tanpa diskon dulu, baru beres itu tambah fitur diskon pelan-pelan biar tidak langsung pusing. Artikel ini saya susun dengan alur yang sama.

1. Konsep Dasar Program

Program ini akan meminta pengguna memasukkan:

  • Harga barang per unit
  • Jumlah barang yang dibeli

Kemudian program menghitung total, dan jika total melebihi batas tertentu, program akan memberikan diskon.

2. Program Dasar: Menghitung Total Pembayaran

Mari mulai dengan versi sederhana: menghitung total tanpa diskon.

#include <iostream>
using namespace std;

int main()
{
    float harga, jumlah, total;

    cout << "Masukkan harga barang: ";
    cin >> harga;

    cout << "Masukkan jumlah barang: ";
    cin >> jumlah;

    total = harga * jumlah;

    cout << "Total pembayaran: Rp" << total << endl;

    return 0;
}

Penjelasan:

  • float digunakan agar bisa menerima harga desimal (misal Rp1.500,50)
  • cin membaca input dari keyboard
  • Operator * mengalikan harga dengan jumlah
  • cout menampilkan hasil ke layar

3. Menambahkan Fitur Diskon

Sekarang kita tambahkan logika diskon: diskon 10% jika total belanja lebih dari Rp1.000.000.

#include <iostream>
using namespace std;

int main()
{
    float harga, jumlah, total, diskon;

    cout << "Masukkan harga barang: ";
    cin >> harga;

    cout << "Masukkan jumlah barang: ";
    cin >> jumlah;

    total = harga * jumlah;

    if (total > 1000000) {
        diskon = total * 0.1;
        total = total - diskon;
        cout << "Diskon 10%: Rp" << diskon << endl;
    }

    cout << "Total pembayaran: Rp" << total << endl;

    return 0;
}

4. Program Lengkap dengan Multi-Tingkat Diskon

Pada versi ini, diskon diberikan bertingkat berdasarkan total belanja:

#include <iostream>
using namespace std;

int main()
{
    float harga, jumlah, total, diskon = 0, totalBayar;

    cout << "=== Program Kasir Sederhana ===\n";
    cout << "Masukkan harga barang: Rp";
    cin >> harga;

    cout << "Masukkan jumlah barang: ";
    cin >> jumlah;

    total = harga * jumlah;
    cout << "\nTotal belanja: Rp" << total << endl;

    // Logika diskon bertingkat
    if (total >= 2000000) {
        diskon = total * 0.2;
        cout << "Diskon 20% (belanja >= Rp2.000.000)" << endl;
    } else if (total >= 1000000) {
        diskon = total * 0.1;
        cout << "Diskon 10% (belanja >= Rp1.000.000)" << endl;
    } else if (total >= 500000) {
        diskon = total * 0.05;
        cout << "Diskon 5% (belanja >= Rp500.000)" << endl;
    } else {
        cout << "Tidak ada diskon (belanja < Rp500.000)" << endl;
    }

    totalBayar = total - diskon;

    cout << "Diskon: Rp" << diskon << endl;
    cout << "Total bayar: Rp" << totalBayar << endl;

    return 0;
}

Contoh Output

=== Program Kasir Sederhana ===
Masukkan harga barang: Rp250000
Masukkan jumlah barang: 5

Total belanja: Rp1250000
Diskon 10% (belanja >= Rp1.000.000)
Diskon: Rp125000
Total bayar: Rp1125000

5. Studi Kasus: Program Kasir dengan Menu dan PPN

Program yang lebih kompleks dengan pajak dan pilihan item:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int pilihan, jumlah;
    float harga, total = 0, diskon = 0, ppn, grandTotal;

    cout << "=== Program Kasir Minimarket ===\n";
    cout << "1. Mie Instan - Rp3.500\n";
    cout << "2. Susu Kotak - Rp6.000\n";
    cout << "3. Roti Tawar - Rp12.000\n";
    cout << "4. Selesai\n\n";

    while (true) {
        cout << "Pilih item (1-4): ";
        cin >> pilihan;

        if (pilihan == 4) break;

        cout << "Jumlah: ";
        cin >> jumlah;

        switch(pilihan) {
            case 1: total += 3500 * jumlah; break;
            case 2: total += 6000 * jumlah; break;
            case 3: total += 12000 * jumlah; break;
            default: cout << "Item tidak valid!\n";
        }
    }

    // Diskon jika total > 100rb
    if (total > 100000) diskon = total * 0.1;

    // PPN 11%
    ppn = (total - diskon) * 0.11;
    grandTotal = total - diskon + ppn;

    cout << fixed << setprecision(0);
    cout << "\n=== Struk Belanja ===\n";
    cout << "Total: Rp" << total << endl;
    cout << "Diskon: Rp" << diskon << endl;
    cout << "PPN 11%%: Rp" << ppn << endl;
    cout << "Grand Total: Rp" << grandTotal << endl;

    return 0;
}

6. Latihan Mandiri

Coba kembangkan program di atas dengan menambahkan fitur:

  1. Simpan data transaksi ke dalam array
  2. Hitung rata-rata belanja per item
  3. Tampilkan jumlah item yang dibeli
  4. Tambahkan validasi input (jangan sampai pengguna memasukkan angka negatif)

Kesalahan Umum yang Sering Terjadi

Saat membuat program total pembayaran, error yang paling sering muncul:

  1. Lupa titik koma — Setiap statement di C++ harus diakhiri dengan ;.
  2. Hasil diskon salah karena int — Kalau harga dan total bertipe int, hasil diskon dibulatkan ke bawah. Pakai double agar uang tampil akurat.
  3. Urutan else if terbalik — Cek diskon dari total terbesar dulu (misal 10% untuk di atas 500 ribu), kalau mulai dari terkecil, diskon besar tidak pernah tercapai.
  4. Lupa return 0; — Fungsi main() bertipe int wajib mengembalikan nilai.
  5. Persentase ditulis salah — Diskon 10% di C++ ditulis total * 0.1, bukan total * 10.

Error nomor 3 dulu bikin saya bingung: diskon 10% tidak pernah muncul padahal total sudah besar, ternyata urutan percabangannya kebalik.

Kesimpulan

Program menghitung total pembayaran dan diskon adalah latihan yang mengajarkan konsep fundamental C++: input/output, variabel, operator, percabangan, dan switch-case. Dengan memahami contoh di atas, Anda bisa mengembangkannya menjadi program kasir yang lebih lengkap untuk studi kasus nyata.

Sigit Nurhanafi avatar
Full-stack developer & technical writer. Berpengalaman di PHP, Laravel, NodeJS, MySQL, dan Python. Aktif menulis tutorial pemrograman dan maintaining open-source projects di PemburuKode sejak 2021.