Menu
Coddy logo textTech

Calcular el costo total

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 35 de 65.

challenge icon

Desafío

Fácil

Crea un programa que continúe el proyecto de la calculadora del carrito de compras implementando la funcionalidad para calcular el costo total de todos los artículos en el carrito de compras. Basándote en la gestión del carrito de la lección anterior, tu programa debe:

  1. Usar el Map del catálogo de productos existente y la List del carrito de compras poblada de la configuración anterior
  2. Leer múltiples entradas de cadenas que representan los artículos que los clientes desean agregar a su carrito (la entrada terminará cuando recibas "cart_done")
  3. Para cada artículo, verificar si existe en el catálogo de productos usando containsKey()
  4. Si el artículo existe, agregarlo a la List del carrito de compras usando el método add()
  5. Calcular el costo total iterando a través de la lista del carrito y buscando el precio de cada artículo en el mapa de productos
  6. Sumar todos los precios para obtener el costo total final
  7. Mostrar el informe de cálculo del carrito en el formato exacto que se muestra a continuación

Por ejemplo, si la tienda tiene los productos "Apple" a 1.50, "Banana" a 0.80, "Orange" a 2.00, "Milk" a 3.25, y los clientes quieren agregar "Apple", "Banana", "Apple", "Milk", tu programa debería mostrar:

Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Cart Contents: [Apple, Banana, Apple, Milk]
Cost Calculation:
Apple: $1.50
Banana: $0.80
Apple: $1.50
Milk: $3.25
Total Cost: $7.05
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Cart Status: Ready for checkout

Si la tienda tiene los productos "Laptop" a 999.99, "Mouse" a 25.50, "Keyboard" a 75.00, y los clientes quieren agregar "Mouse", "Keyboard", "Mouse", "Monitor", tu programa debería mostrar:

Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Cart Contents: [Mouse, Keyboard, Mouse]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Mouse: $25.50
Total Cost: $126.00
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 1
Cart Status: Ready for checkout

Si la tienda tiene los productos "Novel" a 12.99, "Magazine" a 4.50, "Textbook" a 89.00, y los clientes quieren agregar "Novel", "Magazine", "Novel", "Textbook", "Dictionary", tu programa debería mostrar:

Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cost Calculation:
Novel: $12.99
Magazine: $4.50
Novel: $12.99
Textbook: $89.00
Total Cost: $119.48
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 1
Cart Status: Ready for checkout

Tu programa debe iterar a través de cada artículo en la lista del carrito de compras, buscar su precio en el mapa del catálogo de productos y sumar ese precio a un total acumulado. Usa un bucle para procesar cada artículo del carrito y acumular el costo total. Muestra el precio individual de cada artículo durante la fase de cálculo de costos. Formatea todos los precios para mostrar exactamente 2 decimales. El formato de entrada será: nombres de artículos para agregar al carrito, terminando con "cart_done".

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Product catalog with items and prices
  Map<String, double> productCatalog = {
    '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 to store selected items
  List<String> shoppingCart = [];
  
  // Counters for tracking operations
  int successfulAdditions = 0;
  int itemsNotFound = 0;
  
  print("Shopping Cart Operations:");
  
  // Read items until "cart_done" is received
  String? item;
  while ((item = stdin.readLineSync()) != "cart_done") {
    if (item != null) {
      if (productCatalog.containsKey(item)) {
        shoppingCart.add(item);
        successfulAdditions++;
        print("Adding '$item': Item added to cart successfully");
      } else {
        itemsNotFound++;
        print("Adding '$item': Item not available in store");
      }
    }
  }
  
  // Display cart contents
  print("Cart Contents: $shoppingCart");
  
  // Calculate unique products
  Set<String> uniqueProducts = shoppingCart.toSet();
  
  // Display cart summary
  print("Cart Summary:");
  print("Total items in cart: ${shoppingCart.length}");
  print("Unique products in cart: ${uniqueProducts.length}");
  print("Items successfully added: $successfulAdditions");
  print("Items not found: $itemsNotFound");
  print("Cart Status: Ready for checkout");
}

Todas las lecciones de Lógica y Flujo