Menu
Coddy logo textTech

Configuração do Projeto

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

challenge icon

Desafio

Fácil

Você construirá uma calculadora de carrinho de compras simples que demonstra como diferentes estruturas de dados trabalham juntas em uma aplicação real.

Crie um programa que estabeleça a base para um sistema de calculadora de carrinho de compras, inicializando as estruturas de dados essenciais necessárias para uma aplicação de e-commerce. Seu programa deve:

  1. Ler uma entrada de string representando o nome da loja
  2. Ler múltiplos pares de entradas representando nomes de produtos e seus preços (a entrada terminará quando você receber "products_done")
  3. Criar um Map para armazenar os produtos disponíveis com seus nomes como chaves e preços como valores
  4. Criar uma List vazia para representar o carrinho de compras
  5. Exibir as informações de configuração inicial e verificar se as estruturas de dados foram inicializadas corretamente
  6. Imprimir o relatório de configuração da loja no formato exato mostrado abaixo

Por exemplo, se o nome da loja for "Fresh Market" e os produtos incluírem "Apple" com preço 1.50, "Banana" com preço 0.80, "Orange" com preço 2.00, "Milk" com preço 3.25, seu programa deve exibir:

Store: Fresh Market
Product Catalog Setup:
Available Products: {Apple: 1.5, Banana: 0.8, Orange: 2.0, Milk: 3.25}
Shopping Cart Initialized: []
System Status:
Total products available: 4
Cart status: Empty
Most expensive item: Milk ($3.25)
Cheapest item: Banana ($0.80)
Average product price: $1.84
Setup Status: Shopping cart system ready for customers

Se o nome da loja for "Tech Store" e os produtos incluírem "Laptop" com preço 999.99, "Mouse" com preço 25.50, "Keyboard" com preço 75.00, seu programa deve exibir:

Store: Tech Store
Product Catalog Setup:
Available Products: {Laptop: 999.99, Mouse: 25.5, Keyboard: 75.0}
Shopping Cart Initialized: []
System Status:
Total products available: 3
Cart status: Empty
Most expensive item: Laptop ($999.99)
Cheapest item: Mouse ($25.50)
Average product price: $366.83
Setup Status: Shopping cart system ready for customers

Se o nome da loja for "Book Corner" e os produtos incluírem "Novel" com preço 12.99, "Magazine" com preço 4.50, "Textbook" com preço 89.00, "Comic" com preço 3.99, "Journal" com preço 15.75, seu programa deve exibir:

Store: Book Corner
Product Catalog Setup:
Available Products: {Novel: 12.99, Magazine: 4.5, Textbook: 89.0, Comic: 3.99, Journal: 15.75}
Shopping Cart Initialized: []
System Status:
Total products available: 5
Cart status: Empty
Most expensive item: Textbook ($89.00)
Cheapest item: Comic ($3.99)
Average product price: $25.25
Setup Status: Shopping cart system ready for customers

Seu programa deve criar um Map com chaves String (nomes dos produtos) e valores double (preços), e uma List de Strings vazia para o carrinho de compras. Encontre os itens mais caros e mais baratos comparando todos os preços no mapa de produtos. Calcule o preço médio dividindo a soma de todos os preços pelo número de produtos. Arredonde a média para 2 casas decimais para exibição. O formato de entrada será: nome da loja, depois nomes de produtos e preços alternados (como strings que precisam ser convertidas para doubles), terminando com "products_done".

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler o nome da loja
  String? storeName = stdin.readLineSync();
  
  // Inicializar estruturas de dados
  Map<String, double> products = {};
  List<String> shoppingCart = [];
  
  // Ler produtos até "products_done"
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "products_done") {
      break;
    }
    String productName = input!;
    String? priceInput = stdin.readLineSync();
    double price = double.parse(priceInput!);
    
    // Adicionar produto ao mapa
    products[productName] = price;
  }
  
  // TODO: Escreva seu código abaixo para calcular estatísticas e gerar o relatório
  
  // Imprimir o relatório de configuração da loja
  // Sua saída deve corresponder exatamente ao formato mostrado nos exemplos
}

Todas as lições de Lógica & Fluxo