Todos os desafios
Fácil 0 resolvidos 0% de aceitação

Formatar uma fatura

Imprima as linhas de uma fatura e o total, com valores guardados em centavos e exibidos em dólares e centavos.

O que você vai aprender

  • Guardar dinheiro em centavos inteiros
  • Escrever centavos como dólares com dois dígitos
  • Montar linhas de relatório e um total

Problema

Ver original (inglês)

Dinheiro costuma ser guardado em centavos inteiros para evitar erros de arredondamento, e só é formatado em dólares na hora de exibir.

Para cada item, escreva a linha <name> x<quantity> = <amount>, onde amount = quantity × preço em centavos. Depois dos itens, escreva Total = <amount> com a soma de todas as linhas.

Escreva cada valor em dólares, um ponto e exatamente dois dígitos de centavos, por exemplo 5 → 0.05 e 1250 → 12.50.

Implemente format_invoice(names, quantities, cents).

Entrada

names, quantities, cents: Listas correspondentes que descrevem cada item.

Saída

Retorne as linhas dos itens seguidas da linha do total.

Restrições

0 ≤ número de itens ≤ 1,000

1 ≤ quantity ≤ 1,000; 0 ≤ cents ≤ 10^6

Exemplos

Exemplo 1
Entrada:
cents = [250, 375]
names = ["Tea", "Cake"]
quantities = [2, 1]

Saída esperada:
expected = ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"]
Entrada:
std::vector<long long> cents = {250, 375};
std::vector<std::string> names = {"Tea", "Cake"};
std::vector<long long> quantities = {2, 1};

Saída esperada:
std::vector<std::string> expected = {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};
Entrada:
long[] cents = new long[] {250, 375};
string[] names = new string[] {"Tea", "Cake"};
long[] quantities = new long[] {2, 1};

Saída esperada:
string[] expected = new string[] {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};

Explicação

2 × 250 = 500 centavos são 5.00 e 375 centavos são 3.75; o total é 875 centavos: ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"].

Exemplo 2
Entrada:
cents = [5]
names = ["Gum"]
quantities = [3]

Saída esperada:
expected = ["Gum x3 = 0.15", "Total = 0.15"]
Entrada:
std::vector<long long> cents = {5};
std::vector<std::string> names = {"Gum"};
std::vector<long long> quantities = {3};

Saída esperada:
std::vector<std::string> expected = {"Gum x3 = 0.15", "Total = 0.15"};
Entrada:
long[] cents = new long[] {5};
string[] names = new string[] {"Gum"};
long[] quantities = new long[] {3};

Saída esperada:
string[] expected = new string[] {"Gum x3 = 0.15", "Total = 0.15"};

Explicação

3 × 5 = 15 centavos, escrito como 0.15: ["Gum x3 = 0.15", "Total = 0.15"].

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

Faça todas as contas em centavos inteiros.

Dica 2

Separe os centavos em dólares (cents / 100) e resto (cents % 100).

Dica 3

Escreva sempre os centavos com dois dígitos: 5 centavos vira 0.05.

Complexidade esperada

tempo O(número de itens), espaço extra O(número de itens)

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.