Menu
Coddy logo textTech

Descripción general del proyecto

Parte de la sección Lógica y Flujo del Journey de GO de Coddy — lección 45 de 68.

challenge icon

Desafío

Fácil

Estás a punto de construir un comprobador de inventario sencillo que te ayudará a gestionar los niveles de stock de los productos.

Establece las bases para tu sistema de gestión de inventario creando las estructuras de datos principales y mostrando los datos iniciales del inventario. Este desafío establece la estructura Product y el mapa de inventario que se utilizarán a lo largo del proyecto.

Recibirás dos entradas:

  • Una cadena que contiene la información de la tienda en el formato "store_name,location" (por ejemplo, "TechStore,Downtown")
  • Una cadena que contiene los datos iniciales del producto en el formato "product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3" (por ejemplo, "Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")

Tu tarea es:

  1. Crear una estructura Product con dos campos:
    • Price (float64) - el precio del producto
    • Quantity (int) - la cantidad actual en stock
  2. Analizar la primera entrada dividiéndola por comas para obtener el nombre y la ubicación de la tienda
  3. Analizar la segunda entrada dividiéndola por comas para obtener las entradas de productos individuales
  4. Para cada entrada de producto, dividir por dos puntos para obtener el nombre, el precio y la cantidad del producto
  5. Convertir la cadena de precio a float64 y la cadena de cantidad a int
  6. Crear un mapa llamado inventory donde las claves son nombres de productos (strings) y los valores son estructuras Product
  7. Poblar el mapa de inventario con los datos de productos analizados
  8. Mostrar la información de la tienda:
    • "=== [store_name] Inventory System ==="
    • "Location: [location]"
    • "Inventory initialized with [number_of_products] products"
  9. Mostrar el inventario actual en orden alfabético por nombre de producto:
    • "Current Inventory:"
    • Para cada producto: "- [product_name]: $[price] (Stock: [quantity])"
  10. Calcular y mostrar las estadísticas del inventario:
    • "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. Mostrar el estado del sistema:
    • "System Status: Ready"
    • "Inventory management system initialized successfully"

Utiliza el paquete strings para dividir las cadenas de entrada, el paquete strconv para convertir cadenas a números, el paquete fmt para la salida formateada y el paquete sort para ordenar los nombres de los productos alfabéticamente. Formatea el valor total del inventario con 2 decimales. Este desafío establece las estructuras de datos fundamentales que se ampliarán en las lecciones posteriores del proyecto de gestión de inventario.

Pruébalo tú mismo

package main

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

// TODO: Define la estructura Product aquí

func main() {
	// Leer la entrada usando bufio.Scanner para manejar los espacios correctamente
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	storeInfo := scanner.Text()
	
	scanner.Scan()
	productData := scanner.Text()
	
	// TODO: Escribe tu código a continuación
	// 1. Analizar la información de la tienda (dividir por coma, verificar la longitud)
	// 2. Analizar los datos del producto (dividir por coma, luego por dos puntos para cada producto)
	// 3. Crear el mapa de inventario
	// 4. Convertir cadenas a los tipos apropiados y poblar el inventario
	// 5. Mostrar la información de la tienda
	// 6. Mostrar el inventario actual (ordenado alfabéticamente)
	// 7. Calcular y mostrar las estadísticas del inventario
	// 8. Mostrar el estado del sistema
	
}

Todas las lecciones de Lógica y Flujo