Pular para o conteúdo
Bruno Dórea
Todos os posts

5 mins de leitura


Calculando Frete dos Brinquedos

Técnicas de Programação com Funções e Classes - 2/2


Ri Happy - Front-end do Zero
Ri Happy - Front-end do Zero

Descrição

Neste desafio, você precisará calcular o frete para as compras feitas em um e-commerce de loja de Brinquedos. Cada compra tem um custo fixo de frete e um custo adicional por produto. Dessa forma, sua tarefa é calcular o valor total do frete com base na lista de produtos comprados, aplicando a taxa fixa e a taxa variável por produto. Para isso, você deve usar uma classe que gerencie a taxa fixa, a taxa por produto e calcule o frete total com base na quantidade total de produtos.

Passo a Passo:

  • Entrada de Dados: O usuário fornecerá uma lista de produtos no formato "Nome: Quantidade", separados por vírgula e espaço. Além disso, a taxa fixa de frete e a taxa por produto serão fornecidas como dois números. Exemplo: "Carrinho:2, Boneca:3" com taxas de frete 5.00 e 2.00, respectivamente.

  • Processamento dos Dados: Utilize uma classe para calcular o frete total. A classe deve armazenar a taxa fixa e a taxa por produto, e deve fornecer um método para calcular o valor total do frete com base na quantidade de produtos. A fórmula para o cálculo do frete é:

    Frete Total = Taxa Fixa + (Taxa por Produto x Quantidade de Produtos)

  • Formatação da Saída: Retorne o valor total do frete com duas casas decimais.

Entrada

Uma lista de produtos e suas quantidades, além das taxas de frete.

Processo:

  • Quantidade Total de Produtos:

    Carrinho: 2

    Boneca: 3

    Total = 2 + 3 = 5

  • Cálculo do Frete Total:

    Frete Total = 5.00 (taxa fixa) + (2.00 * 5) = 5.00 + 10.00 = 15.00

Saída

A tabela abaixo apresenta exemplos com alguns dados de entrada e suas respectivas saídas esperadas. Certifique-se de testar seu programa com esses exemplos e com outros casos possíveis.

Exemplos

A tabela abaixo apresenta exemplos com alguns dados de entrada e suas respectivas saídas esperadas. Certifique-se de testar seu programa com esses exemplos e com outros casos possíveis.

EntradaSaída
Funko Pop:3, Action Figure:2, LEGO:1
6.0024.00
3.00
EntradaSaída
Board Game:1, Miniatura:4
8.5021.00
2.50
EntradaSaída
Board Game:2, LEGO:2
12.0036.00
6.00

Resolução

class CalculadoraFrete {
    constructor(taxaFixa, taxaPorProduto) {
       this.taxaFixa = taxaFixa
       this.taxaPorProduto = taxaPorProduto
    }
 
    calcularFrete(listaProdutos) {
        const produtos = listaProdutos.split(', ')
        
        const quantidadeTotal = produtos.reduce((total, produto) => {
            const quantidade = parseInt(produto.split(':')[1], 10)
            return total + quantidade
        }, 0)
        
        const freteTotal = this.taxaFixa + (this.taxaPorProduto * quantidadeTotal)
        
        return freteTotal.toFixed(2)
    }
}
 
function main() {
    const listaProdutos = gets()
    const taxaFixa = parseFloat(gets())
    const taxaPorProduto = parseFloat(gets())
    const calculadora = new CalculadoraFrete(taxaFixa, taxaPorProduto)
    print(calculadora.calcularFrete(listaProdutos))
}
 
main()

Para encontrar outras soluções, verifique aqui.

Caso encontre algum erro ou tenha sugestões, clique aqui e abra uma issue no Github.