Menu
Coddy logo textTech

Calculando o Custo Total

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 35 de 65.

challenge icon

Desafio

Fácil

Crie um programa que continue o projeto da calculadora de carrinho de compras, implementando a funcionalidade para calcular o custo total de todos os itens no carrinho. Com base no gerenciamento de carrinho da lição anterior, seu programa deve:

  1. Usar o Map do catálogo de produtos existente e a List do carrinho de compras preenchida da configuração anterior
  2. Ler múltiplas entradas de string representando itens que os clientes desejam adicionar ao carrinho (a entrada terminará quando você receber "cart_done")
  3. Para cada item, verificar se ele existe no catálogo de produtos usando containsKey()
  4. Se o item existir, adicioná-lo à List do carrinho de compras usando o método add()
  5. Calcular o custo total iterando pela lista do carrinho e buscando o preço de cada item no mapa de produtos
  6. Somar todos os preços para obter o custo total final
  7. Exibir o relatório de cálculo do carrinho no formato exato mostrado abaixo

Por exemplo, se a loja tem os produtos "Apple" a 1.50, "Banana" a 0.80, "Orange" a 2.00, "Milk" a 3.25, e os clientes desejam adicionar "Apple", "Banana", "Apple", "Milk", seu programa deve exibir:

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

Se a loja tem os produtos "Laptop" a 999.99, "Mouse" a 25.50, "Keyboard" a 75.00, e os clientes desejam adicionar "Mouse", "Keyboard", "Mouse", "Monitor", seu programa deve exibir:

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

Se a loja tem os produtos "Novel" a 12.99, "Magazine" a 4.50, "Textbook" a 89.00, e os clientes desejam adicionar "Novel", "Magazine", "Novel", "Textbook", "Dictionary", seu programa deve exibir:

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, General, 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

Seu programa deve iterar por cada item na lista do carrinho de compras, buscar seu preço no mapa do catálogo de produtos e adicionar esse preço a um total acumulado. Use um loop para processar cada item do carrinho e acumular o custo total. Exiba o preço individual de cada item durante a fase de cálculo de custo. Formate todos os preços para mostrar exatamente 2 casas decimais. O formato de entrada será: nomes dos itens para adicionar ao carrinho, terminando com "cart_done".

Experimente você mesmo

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 as lições de Lógica & Fluxo