Created
January 27, 2025 19:44
-
-
Save RobertoBarros/c3001e2b45d48101375f666e83717e85 to your computer and use it in GitHub Desktop.
reboot_batch_1925_instacart_final
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Mensagem de boas vindas | |
puts '-' * 50 | |
puts "Bem-vindo ao nosso mercado" | |
products = { "kiwi" => {price: 1.25, stock: 5}, | |
"banana" => {price: 0.5, stock: 10}, | |
"mango" => {price: 4.0, stock: 6}, | |
"asparagus" => {price: 9.0, stock: 3} | |
} | |
cart = [] | |
# cart é um array de hash onde: | |
# cart = [{product: "mango", quantity: 2}, {product: "banana", quantity: 5}, ...] | |
# LOOP | |
loop do | |
# Exibir produtos com o respectivo preço e stock | |
puts '-' * 50 | |
products.each do |product, info| | |
price = info[:price] | |
stock = info[:stock] | |
puts "#{product} - R$ #{price} (in stock #{stock})" | |
end | |
puts '-' * 50 | |
# Perguntar qual produto quer adicionar ao carrinho | |
puts "Qual produto você deseja adicionar ao carrinho? Ou (quit) para sair" | |
choice = gets.chomp | |
# Se o produto for "quit" sai do loop | |
break if choice == "quit" | |
# Somente adicionar ao carrinho se for um nome de produto válido | |
if products.key?(choice) | |
# Perguntar a quantidade | |
puts "Qual a quantidade?" | |
quantity = gets.chomp.to_i | |
# Verificar se a quantidade tem em stock para poder colocar no carrinho | |
info = products[choice] | |
stock = info[:stock] | |
# Ou somente stock = products[choice][:stock] | |
if quantity <= stock | |
cart << {product: choice, quantity: quantity} | |
products[choice][:stock] = stock - quantity | |
else | |
puts "Impossível! Quantidade de #{choice} é somente #{stock}" | |
end | |
else | |
puts "O produto não está em estoque" | |
end | |
# FIM DO LOOP | |
end | |
bill = 0 | |
# Calcular o total dos preços dos produtos no carrinho | |
puts '-' * 50 | |
cart.each do |item| | |
# item é um hash no formato: {:product=>"kiwi", :quantity=>10} | |
product = item[:product] # string com o nome do produto | |
quantity = item[:quantity] # integer com a quantidade do produto | |
price = products[product][:price] # products[product] é um hash no formato {price: 1.25, stock: 5} | |
subtotal = price * quantity | |
puts "#{product} : #{quantity} X #{price} = #{subtotal}" | |
bill += subtotal | |
end | |
# Mostrar o valor total | |
puts "O valor da sua conta foi #{bill} " | |
puts '-' * 50 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment