Menu
Coddy logo textTech

Applicare uno sconto

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 36 di 65.

challenge icon

Sfida

Facile

Crea un programma che prosegua il progetto del calcolatore del carrello implementando un sistema di sconti che applica sconti percentuali agli ordini idonei. Basandosi sul calcolo del costo totale della lezione precedente, il tuo programma dovrà:

  1. Usare la Map del catalogo prodotti esistente e le funzionalità del carrello della configurazione precedente
  2. Leggere più input stringa che rappresentano gli articoli che i clienti vogliono aggiungere al carrello (l’input terminerà quando riceverai "cart_done")
  3. Per ogni articolo, controllare se esiste nel catalogo prodotti usando containsKey() e aggiungere al carrello gli articoli validi
  4. Calcolare il subtotale sommando i prezzi di tutti gli articoli nel carrello
  5. Leggere un input stringa che rappresenta l’importo soglia dello sconto
  6. Leggere un input stringa che rappresenta la percentuale di sconto da applicare
  7. Applicare lo sconto solo se il subtotale raggiunge o supera l’importo soglia
  8. Calcolare l’importo dello sconto e il totale finale dopo aver applicato lo sconto
  9. Visualizzare il resoconto del calcolo dello sconto nel formato esatto mostrato di seguito

Per esempio, se il negozio ha i prodotti "Apple" a 1.50, "Banana" a 0.80, "Orange" a 2.00, "Milk" a 3.25, i clienti vogliono aggiungere "Apple", "Orange", "Milk", "Apple", la soglia dello sconto è 5.00 e la percentuale di sconto è 10, il tuo programma dovrebbe produrre:

Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Orange': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Cart Contents: [Apple, Orange, Milk, Apple]
Cost Calculation:
Apple: $1.50
Orange: $2.00
Milk: $3.25
Apple: $1.50
Subtotal: $8.25
Discount Analysis:
Threshold: $5.00
Discount Rate: 10%
Subtotal ($8.25) meets threshold requirement
Discount Applied: $0.83
Final Total: $7.42
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Discount Status: 10% discount applied
Cart Status: Ready for checkout

Se il negozio ha i prodotti "Laptop" a 999.99, "Mouse" a 25.50, "Keyboard" a 75.00, i clienti vogliono aggiungere "Mouse", "Keyboard", la soglia dello sconto è 150.00 e la percentuale di sconto è 15, il tuo programma dovrebbe produrre:

Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Cart Contents: [Mouse, Keyboard]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Subtotal: $100.50
Discount Analysis:
Threshold: $150.00
Discount Rate: 15%
Subtotal ($100.50) does not meet threshold requirement
Discount Applied: $0.00
Final Total: $100.50
Cart Summary:
Total items in cart: 2
Unique products in cart: 2
Items successfully added: 2
Items not found: 0
Discount Status: No discount applied
Cart Status: Ready for checkout

Se il negozio ha i prodotti "Novel" a 12.99, "Magazine" a 4.50, "Textbook" a 89.00, i clienti vogliono aggiungere "Novel", "Textbook", "Magazine", "Novel", la soglia dello sconto è 75.00 e la percentuale di sconto è 20, il tuo programma dovrebbe produrre:

Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Cart Contents: [Novel, Textbook, Magazine, Novel]
Cost Calculation:
Novel: $12.99
Textbook: $89.00
Magazine: $4.50
Novel: $12.99
Subtotal: $119.48
Discount Analysis:
Threshold: $75.00
Discount Rate: 20%
Subtotal ($119.48) meets threshold requirement
Discount Applied: $23.90
Final Total: $95.58
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Discount Status: 20% discount applied
Cart Status: Ready for checkout

Il tuo programma deve prima calcolare il subtotale, quindi verificare se raggiunge o supera la soglia dello sconto usando un’istruzione condizionale if. Se la soglia viene raggiunta, calcolare l’importo dello sconto moltiplicando il subtotale per la percentuale di sconto divisa per 100. Sottrarre l’importo dello sconto dal subtotale per ottenere il totale finale. Formattare tutti gli importi monetari in modo da mostrare esattamente 2 cifre decimali. Il formato dell’input sarà: i nomi degli articoli da aggiungere al carrello, terminati da "cart_done", seguiti dall’importo soglia dello sconto e dalla percentuale di sconto (entrambi come stringhe da convertire nei tipi numerici appropriati).

Provalo tu

import 'dart:io';

void main() {
  // Product catalog with prices
  Map<String, double> products = {
    'Apple': 1.50,
    'Banana': 0.80,
    'Orange': 2.00,
    'Milk': 3.25,
    'Laptop': 999.99,
    'Mouse': 25.50,
    'Keyboard': 75.00,
    'Novel': 12.99,
    'Magazine': 4.50,
    'Textbook': 89.00
  };
  
  // Shopping cart list
  List<String> cart = [];
  
  // Counters for summary
  int itemsAdded = 0;
  int itemsNotFound = 0;
  
  print('Shopping Cart Operations:');
  
  // Read items until "cart_done"
  String? item;
  while ((item = stdin.readLineSync()) != 'cart_done') {
    if (item != null) {
      if (products.containsKey(item)) {
        cart.add(item);
        print("Adding '$item': Item added to cart successfully");
        itemsAdded++;
      } else {
        print("Adding '$item': Item not available in store");
        itemsNotFound++;
      }
    }
  }
  
  // Display cart contents
  print('Cart Contents: $cart');
  
  // Calculate total cost
  print('Cost Calculation:');
  double totalCost = 0.0;
  
  for (String cartItem in cart) {
    double price = products[cartItem]!;
    totalCost += price;
    print('$cartItem: \$${price.toStringAsFixed(2)}');
  }
  
  print('Total Cost: \$${totalCost.toStringAsFixed(2)}');
  
  // Cart summary
  Set<String> uniqueProducts = cart.toSet();
  print('Cart Summary:');
  print('Total items in cart: ${cart.length}');
  print('Unique products in cart: ${uniqueProducts.length}');
  print('Items successfully added: $itemsAdded');
  print('Items not found: $itemsNotFound');
  print('Cart Status: Ready for checkout');
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online