Menu
Coddy logo textTech

Vendendo um Item

Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 52 de 66.

challenge icon

Desafio

Fácil

Você receberá cinco entradas. A primeira entrada é o nome do item a ser vendido. A segunda entrada é a quantidade a ser vendida. A terceira entrada é uma lista separada por vírgulas dos nomes dos itens no estoque. A quarta entrada é uma lista separada por vírgulas dos preços correspondentes a cada item. A quinta entrada é uma lista separada por vírgulas das quantidades correspondentes a cada item. Crie um HashMap para armazenar os dados do estoque, onde a chave é o nome do item e o valor é uma tupla contendo o preço e a quantidade (f64, i32). Em seguida, tente vender a quantidade solicitada do item.

Requisitos:

  • Importe HashMap de std::collections
  • Leia a primeira entrada (nome do item a ser vendido) e remova os espaços em branco
  • Leia a segunda entrada (quantidade a ser vendida) e remova os espaços em branco
  • Converta a quantidade a ser vendida para i32
  • Leia a terceira entrada (nomes dos itens separados por vírgulas) e remova os espaços em branco
  • Leia a quarta entrada (preços separados por vírgulas) e remova os espaços em branco
  • Leia a quinta entrada (quantidades separadas por vírgulas) e remova os espaços em branco
  • Crie um HashMap<String, (f64, i32)> mutável para o estoque
  • Separe os nomes dos itens por vírgulas
  • Separe os preços por vírgulas e converta cada um para f64
  • Separe as quantidades por vírgulas e converta cada uma para i32
  • Insira cada item no estoque com seu preço e quantidade correspondentes como uma tupla
  • Use .get() para verificar se o item solicitado existe no estoque
  • Use uma expressão match para tratar o Option retornado por .get()
  • No braço Some:
    • Extraia o preço e a quantidade atual da tupla
    • Verifique se a quantidade atual é maior ou igual à quantidade a ser vendida
    • Se sim:
      • Calcule a nova quantidade subtraindo a quantidade a ser vendida da quantidade atual
      • Calcule o preço total multiplicando o preço do item pela quantidade a ser vendida
      • Use .insert() para atualizar o estoque com a nova quantidade
      • Imprima: Sold [quantity_to_sell] [item_name]
      • Imprima: Total: $[total_price]
      • Imprima: Remaining stock: [new_quantity]
    • Se não (estoque insuficiente):
      • Imprima: Insufficient stock for [item_name]
      • Imprima: Available: [current_quantity]
  • No braço None, imprima: [item_name] is not in stock

Entrada:

  • Primeira linha: Nome do item a ser vendido (por exemplo, Mouse)
  • Segunda linha: Quantidade a ser vendida (por exemplo, 10)
  • Terceira linha: Nomes dos itens separados por vírgulas (por exemplo, Laptop,Mouse,Keyboard)
  • Quarta linha: Preços separados por vírgulas (por exemplo, 999.99,25.50,75.00)
  • Quinta linha: Quantidades separadas por vírgulas (por exemplo, 15,50,30)

Saída:

  • Se o item existir e houver estoque suficiente:
    • Primeira linha: Sold [quantity_to_sell] [item_name]
    • Segunda linha: Total: $[total_price]
    • Terceira linha: Remaining stock: [new_quantity]
  • Se o item existir, mas não houver estoque suficiente:
    • Primeira linha: Insufficient stock for [item_name]
    • Segunda linha: Available: [current_quantity]
  • Se o item não existir: [item_name] is not in stock

Experimente você mesmo

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

fn main() {
    // Ler a 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: Escreva seu código abaixo
    // Criar um HashMap para armazenar o inventário
    // Processar as entradas e construir o inventário
    // Verificar se o item existe e lidar com a venda
    
}

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

Pratique por conta própria: Compilador de Rust online