Created
November 7, 2025 00:45
-
-
Save RobertoBarros/8feb6793f0f8169fbe0d7411bfe59db4 to your computer and use it in GitHub Desktop.
batch_2175_reboot_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 "-" * 30 | |
| puts "Bem vindos a Pé de Pano store" | |
| puts "-" * 30 | |
| # Definir os produtos (nome, preço, stock) disponíveis | |
| products = { | |
| "kiwi" => { price: 1.25, stock: 5 }, | |
| "banana" => { price: 0.5, stock: 6 }, | |
| "manga" => { price: 4.0, stock: 3 }, | |
| "aspargo" => { price: 9.0, stock: 2 }, | |
| } | |
| # Mostrar os produtos com o respectivo preço | |
| puts "Hoje nós temos os seguintes produtos disponíveis:" | |
| products.each do |item, info| | |
| puts "#{item}: #{info[:price]} (#{info[:stock]} disponivel)" | |
| end | |
| puts "-" * 30 | |
| cart = [] | |
| # LOOP | |
| loop do | |
| # Perguntar qual o produto ou `quit` para encerrar | |
| puts "Qual produto você gostaria de comprar hoje? ou 'quit' para sair" | |
| answer = gets.chomp.downcase.strip | |
| # Se o usuário digitou `quit` sai do loop | |
| break if answer == "quit" | |
| # Armazenar o produto no carrinho do usuário se ele existir | |
| if products.key?(answer) | |
| # Perguntar a quantidade de produtos | |
| puts "Qual quantidade de #{answer} você deseja?" | |
| quantity = gets.chomp.to_i | |
| # Somente adicionar no carrinho se tiver disponível no estoque | |
| if quantity <= products[answer][:stock] | |
| cart << { | |
| item: answer, | |
| quantity: quantity | |
| } | |
| # Remove do estoque a quantidade que adicionamos ao carrinho | |
| products[answer][:stock] -= quantity | |
| else | |
| # Não temos a quantidade solicitada do item | |
| puts "Desculpe, só temos #{products[answer][:stock]} de #{answer}" | |
| end | |
| else | |
| puts "Desculpe, produto #{answer} não disponível" | |
| end | |
| #FIM LOOP | |
| end | |
| # cart é um array de hashes do tipo: | |
| # [{item: "banana", quantity: 20}, {item: "manga", quantity: 10}] | |
| # Calcular o subtotal e total dos produtos no carrinho | |
| total = 0 | |
| puts "-" * 30 | |
| cart.each do |info| | |
| item = info[:item] | |
| quantity = info[:quantity] | |
| # lembrando que products[item] é hash como { price: 1.25, stock: 5 } | |
| price = products[item][:price] | |
| subtotal = quantity * price | |
| # Mostrar o subtotal por item | |
| puts "#{item}: #{quantity} X #{price} = #{subtotal}" | |
| total += subtotal | |
| end | |
| # Mostrar o total dos produtos no carrinho | |
| puts "-" * 30 | |
| puts "O valor total de sua compra foi: #{total}" | |
| puts "-" * 30 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment