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 dê continuidade ao projeto da calculadora do carrinho de compras, implementando a funcionalidade para calcular o custo total de todos os itens no carrinho de compras. Com base no gerenciamento do carrinho da lição anterior, seu programa deve:

  1. Usar o Map de catálogo de produtos existente e a List de carrinho de compras preenchida da configuração anterior
  2. Ler várias entradas de texto que representam os 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 consultando 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 tiver os produtos "Apple" por 1.50, "Banana" por 0.80, "Orange" por 2.00, "Milk" por 3.25, e os clientes quiserem adicionar "Apple", "Banana", "Apple", "Milk", seu programa deverá produzir:

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 tiver os produtos "Laptop" por 999.99, "Mouse" por 25.50, "Keyboard" por 75.00, e os clientes quiserem adicionar "Mouse", "Keyboard", "Mouse", "Monitor", seu programa deverá produzir:

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 tiver os produtos "Novel" por 12.99, "Magazine" por 4.50, "Textbook" por 89.00, e os clientes quiserem adicionar "Novel", "Magazine", "Novel", "Textbook", "Dictionary", seu programa deverá produzir:

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

Seu programa deve iterar por cada item na lista do carrinho de compras, consultar 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 etapa de cálculo do custo. Formate todos os preços para mostrar exatamente 2 casas decimais. O formato da entrada será: nomes dos itens a serem adicionados 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

Pratique por conta própria: Compilador de Dart online