Vendendo um Item
Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 52 de 66.
Desafio
FácilVocê 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
HashMapdestd::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
matchpara tratar oOptionretornado 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]
- Imprima:
- 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]
- Primeira linha:
- Se o item existir, mas não houver estoque suficiente:
- Primeira linha:
Insufficient stock for [item_name] - Segunda linha:
Available: [current_quantity]
- Primeira linha:
- 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
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo FinalPratique por conta própria: Compilador de Rust online