Untitled
unknown
plain_text
10 months ago
2.0 kB
8
Indexable
void scase () {
print('=== Program perhitungan restoran ===');
stdout.write('Mau pesan berapa nih? : ');
int? jumlahMenu = int.tryParse(stdin.readLineSync()!);
if (jumlahMenu == null || jumlahMenu <= 0) {
print('Harga makanan tidak valid');
return;
}
double totalHarga = 0;
List<String> rincianPesanan = [];
for (int i = 1; i <= jumlahMenu; i++) {
stdout.write('\n Masukan nama menu ke-$i : ');
String? namaMenu = stdin.readLineSync();
stdout.write('Masukan harga menu : Rp. ');
double? harga = double.tryParse(stdin.readLineSync()!);
stdout.write('Masukan jumlah pesanan : ');
int? jumlahItem = int.tryParse(stdin.readLineSync()!);
if (namaMenu == null || harga == null || jumlahItem == null || harga <= 0 || jumlahItem <= 0) {
print('inputan tidak valid, silahkan coba lagi');
return;
}
double subtotal = harga * jumlahItem;
rincianPesanan.add('$i., $namaMenu, x$jumlahItem = Rp${subtotal.toStringAsFixed(0)}');
totalHarga += subtotal;
}
// Hitung diskon
double diskon = 0;
if (totalHarga > 500000) {
diskon = totalHarga * 0.1;
} else if (totalHarga > 250000) {
diskon = totalHarga * 0.05;
} else if (totalHarga > 100000) {
diskon = totalHarga * 0.02;
}
// Hitung pajak
double totalSetelahDiskon = totalHarga - diskon;
double pajak = totalSetelahDiskon * 0.10;
// Hitung total akhir
double totalAkhir = totalSetelahDiskon + pajak;
// Tampilkan rincian pesanan
print("\n=== Rincian Pesanan ===");
rincianPesanan.forEach(print);
print("\nTotal harga sebelum diskon: Rp${totalHarga.toStringAsFixed(0)}");
print("Diskon (${diskon > 0 ? (diskon / totalHarga * 100).toStringAsFixed(0) : 0}%): Rp${diskon.toStringAsFixed(0)}");
print("Pajak (10%): Rp${pajak.toStringAsFixed(0)}");
print("Total akhir yang harus dibayar: Rp${totalAkhir.toStringAsFixed(0)}");
}Editor is loading...
Leave a Comment