Untitled

 avatar
unknown
plain_text
8 days ago
2.0 kB
3
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)}");

}
Leave a Comment