Menu
Coddy logo textTech

Vender un artículo

Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 52 de 66.

challenge icon

Desafío

Fácil

Recibirás cinco entradas. La primera entrada es el nombre del artículo a vender. La segunda entrada es la cantidad a vender. La tercera entrada es una lista separada por comas de los nombres de los artículos en el inventario. La cuarta entrada es una lista separada por comas de los precios correspondientes a cada artículo. La quinta entrada es una lista separada por comas de las cantidades correspondientes a cada artículo. Construye un HashMap para almacenar los datos del inventario donde la clave sea el nombre del artículo y el valor sea una tupla que contenga el precio y la cantidad (f64, i32). Luego, intenta vender la cantidad solicitada del artículo.

Requisitos:

  • Importa HashMap de std::collections
  • Lee la primera entrada (nombre del artículo a vender) y elimina los espacios en blanco
  • Lee la segunda entrada (cantidad a vender) y elimina los espacios en blanco
  • Convierte la cantidad a vender a i32
  • Lee la tercera entrada (nombres de artículos separados por comas) y elimina los espacios en blanco
  • Lee la cuarta entrada (precios separados por comas) y elimina los espacios en blanco
  • Lee la quinta entrada (cantidades separadas por comas) y elimina los espacios en blanco
  • Crea un HashMap<String, (f64, i32)> mutable para el inventario
  • Divide los nombres de los artículos por comas
  • Divide los precios por comas y convierte cada uno a f64
  • Divide las cantidades por comas y convierte cada una a i32
  • Inserta cada artículo en el inventario con su precio y cantidad correspondientes como una tupla
  • Usa .get() para verificar si el artículo solicitado existe en el inventario
  • Usa una expresión match para manejar el Option devuelto por .get()
  • En el brazo Some:
    • Extrae el precio y la cantidad actual de la tupla
    • Verifica si la cantidad actual es mayor o igual a la cantidad a vender
    • Si es así:
      • Calcula la nueva cantidad restando la cantidad a vender de la cantidad actual
      • Calcula el precio total multiplicando el precio del artículo por la cantidad a vender
      • Usa .insert() para actualizar el inventario con la nueva cantidad
      • Imprime: Sold [quantity_to_sell] [item_name]
      • Imprime: Total: $[total_price]
      • Imprime: Remaining stock: [new_quantity]
    • Si no (stock insuficiente):
      • Imprime: Insufficient stock for [item_name]
      • Imprime: Available: [current_quantity]
  • En el brazo None, imprime: [item_name] is not in stock

Entrada:

  • Primera línea: Nombre del artículo a vender (por ejemplo, Mouse)
  • Segunda línea: Cantidad a vender (por ejemplo, 10)
  • Tercera línea: Nombres de artículos separados por comas (por ejemplo, Laptop,Mouse,Keyboard)
  • Cuarta línea: Precios separados por comas (por ejemplo, 999.99,25.50,75.00)
  • Quinta línea: Cantidades separadas por comas (por ejemplo, 15,50,30)

Salida:

  • Si el artículo existe y hay stock suficiente:
    • Primera línea: Sold [quantity_to_sell] [item_name]
    • Segunda línea: Total: $[total_price]
    • Tercera línea: Remaining stock: [new_quantity]
  • Si el artículo existe pero no hay stock suficiente:
    • Primera línea: Insufficient stock for [item_name]
    • Segunda línea: Available: [current_quantity]
  • Si el artículo no existe: [item_name] is not in stock

Pruébalo tú mismo

use std::collections::HashMap;
use std::io;

fn main() {
    // Leer la entrada
    let mut item_to_sell = String::new();
    io::stdin().read_line(&mut item_to_sell).expect("Failed to read line");
    let item_to_sell = item_to_sell.trim();
    
    let mut quantity_to_sell_input = String::new();
    io::stdin().read_line(&mut quantity_to_sell_input).expect("Failed to read line");
    let quantity_to_sell: i32 = quantity_to_sell_input.trim().parse().expect("Invalid number");
    
    let mut item_names_input = String::new();
    io::stdin().read_line(&mut item_names_input).expect("Failed to read line");
    let item_names_input = item_names_input.trim();
    
    let mut prices_input = String::new();
    io::stdin().read_line(&mut prices_input).expect("Failed to read line");
    let prices_input = prices_input.trim();
    
    let mut quantities_input = String::new();
    io::stdin().read_line(&mut quantities_input).expect("Failed to read line");
    let quantities_input = quantities_input.trim();
    
    // TODO: Escribe tu código abajo
    // Crear un HashMap para almacenar el inventario
    // Procesar las entradas y construir el inventario
    // Verificar si el artículo existe y gestionar la venta
    
}

Todas las lecciones de Logic & Flow