Menu
Coddy logo textTech

Visão Geral do Projeto

Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 45 de 68.

challenge icon

Desafio

Fácil

Você está prestes a construir um verificador de inventário simples que o ajudará a gerenciar os níveis de estoque de produtos.

Prepare a base para o seu sistema de gerenciamento de inventário criando as estruturas de dados principais e exibindo os dados iniciais do inventário. Este desafio estabelece a struct Product e o mapa de inventário que serão usados ao longo do projeto.

Você receberá duas entradas:

  • Uma string contendo informações da loja no formato "store_name,location" (ex: "TechStore,Downtown")
  • Uma string contendo os dados iniciais dos produtos no formato "product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3" (ex: "Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")

Sua tarefa é:

  1. Criar uma struct Product com dois campos:
    • Price (float64) - o preço do produto
    • Quantity (int) - a quantidade atual em estoque
  2. Analisar a primeira entrada dividindo-a por vírgulas para obter o nome e a localização da loja
  3. Analisar a segunda entrada dividindo-a por vírgulas para obter as entradas individuais de produtos
  4. Para cada entrada de produto, dividir por dois-pontos para obter o nome, preço e quantidade do produto
  5. Converter a string de preço para float64 e a string de quantidade para int
  6. Criar um mapa chamado inventory onde as chaves são nomes de produtos (strings) e os valores são structs Product
  7. Preencher o mapa de inventário com os dados de produtos analisados
  8. Exibir as informações da loja:
    • "=== [store_name] Inventory System ==="
    • "Location: [location]"
    • "Inventory initialized with [number_of_products] products"
  9. Exibir o inventário atual em ordem alfabética pelo nome do produto:
    • "Current Inventory:"
    • Para cada produto: "- [product_name]: $[price] (Stock: [quantity])"
  10. Calcular e exibir as estatísticas do inventário:
    • "Inventory Statistics:"
    • "Total Products: [total_number_of_products]"
    • "Total Items in Stock: [sum_of_all_quantities]"
    • "Total Inventory Value: $[sum_of_price_times_quantity_for_all_products]"
  11. Exibir o status do sistema:
    • "System Status: Ready"
    • "Inventory management system initialized successfully"

Use o pacote strings para dividir as strings de entrada, o pacote strconv para converter strings em números, o pacote fmt para saída formatada e o pacote sort para ordenar os nomes dos produtos em ordem alfabética. Formate o valor total do inventário com 2 casas decimais. Este desafio estabelece as estruturas de dados fundamentais que serão estendidas em lições subsequentes do projeto de gerenciamento de inventário.

Experimente você mesmo

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
	"strings"
)

// TODO: Defina a struct Product aqui

func main() {
	// Ler a entrada usando bufio.Scanner para lidar com espaços adequadamente
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	storeInfo := scanner.Text()
	
	scanner.Scan()
	productData := scanner.Text()
	
	// TODO: Escreva seu código abaixo
	// 1. Analisar informações da loja (separar por vírgula, verificar comprimento)
	// 2. Analisar dados dos produtos (separar por vírgula, depois por dois pontos para cada produto)
	// 3. Criar mapa de inventário
	// 4. Converter strings para os tipos apropriados e preencher o inventário
	// 5. Exibir informações da loja
	// 6. Exibir inventário atual (ordenado alfabeticamente)
	// 7. Calcular e exibir estatísticas do inventário
	// 8. Exibir status do sistema
	
}

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