fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. struct ItemPesanan {
  9. string nama;
  10. int harga;
  11. int jumlah;
  12. double subtotal;
  13. };
  14.  
  15. int main() {
  16. // Daftar menu makanan dengan harga
  17. string menu[3] = {"Nasi Goreng", "Mie Ayam", "Ayam Bakar"};
  18. int harga[3] = {15000, 12000, 20000};
  19.  
  20. vector<ItemPesanan> pesanan;
  21. char lanjut;
  22. double totalHarga = 0.0;
  23. double uangBayar, kembalian;
  24.  
  25. // Loop untuk memesan beberapa item
  26. do {
  27. // Tampilkan menu
  28. cout << "=== Menu Makanan ===" << endl;
  29. for (int i = 0; i < 3; i++) {
  30. cout << (i + 1) << ". " << menu[i] << " - Rp " << harga[i] << endl;
  31. }
  32.  
  33. int pilihan, jumlah;
  34.  
  35. // Minta pilihan makanan
  36. cout << "\nPilih makanan (1-3): ";
  37. cin >> pilihan;
  38.  
  39. if (pilihan < 1 || pilihan > 3) {
  40. cout << "Pilihan tidak valid! Silakan coba lagi." << endl;
  41. continue;
  42. }
  43.  
  44. // Minta jumlah pesanan
  45. cout << "Masukkan jumlah pesanan: ";
  46. cin >> jumlah;
  47.  
  48. if (jumlah <= 0) {
  49. cout << "Jumlah pesanan harus lebih dari 0! Silakan coba lagi." << endl;
  50. continue;
  51. }
  52.  
  53. // Hitung subtotal dan tambahkan ke pesanan
  54. double subtotal = harga[pilihan - 1] * jumlah;
  55. pesanan.push_back({menu[pilihan - 1], harga[pilihan - 1], jumlah, subtotal});
  56. totalHarga += subtotal;
  57.  
  58. // Tanya apakah ingin memesan lagi
  59. cout << "Apakah ingin memesan lagi? (y/n): ";
  60. cin >> lanjut;
  61.  
  62. } while (lanjut == 'y' || lanjut == 'Y');
  63.  
  64. // Jika tidak ada pesanan, keluar
  65. if (pesanan.empty()) {
  66. cout << "Tidak ada pesanan. Program selesai." << endl;
  67. return 0;
  68. }
  69.  
  70. // Tampilkan ringkasan pesanan
  71. cout << "\n=== Ringkasan Pesanan ===" << endl;
  72. for (const auto& item : pesanan) {
  73. cout << item.nama << " x" << item.jumlah << " - Rp " << fixed << setprecision(0) << item.subtotal << endl;
  74. }
  75. cout << "Total Harga: Rp " << fixed << setprecision(0) << totalHarga << endl;
  76.  
  77. // Minta uang yang dibayar
  78. cout << "\nMasukkan jumlah uang yang dibayar: Rp ";
  79. cin >> uangBayar;
  80.  
  81. if (uangBayar < totalHarga) {
  82. cout << "Uang yang dibayar kurang! Total harga: Rp " << fixed << setprecision(0) << totalHarga << endl;
  83. return 1;
  84. }
  85.  
  86. // Hitung kembalian
  87. kembalian = uangBayar - totalHarga;
  88.  
  89. // Tampilkan struk belanja
  90. cout << "\n=== Struk Belanja ===" << endl;
  91. cout << "Pesanan:" << endl;
  92. for (const auto& item : pesanan) {
  93. cout << "- " << item.nama << " x" << item.jumlah << " @ Rp " << item.harga << " = Rp " << fixed << setprecision(0) << item.subtotal << endl;
  94. }
  95. cout << "Total Harga: Rp " << fixed << setprecision(0) << totalHarga << endl;
  96. cout << "Uang Dibayar: Rp " << fixed << setprecision(0) << uangBayar << endl;
  97. cout << "Kembalian: Rp " << fixed << setprecision(0) << kembalian << endl;
  98. cout << "Terima kasih telah memesan!" << endl;
  99.  
  100. return 0;
  101. }
  102.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
=== Menu Makanan ===
1. Nasi Goreng - Rp 15000
2. Mie Ayam - Rp 12000
3. Ayam Bakar - Rp 20000

Pilih makanan (1-3): Pilihan tidak valid! Silakan coba lagi.
Tidak ada pesanan. Program selesai.