Todos los desafíos
Fácil 0 resueltos 0% de aceptación

Dar formato a una factura

Imprime las líneas de una factura y el total, con importes guardados en centavos y mostrados en dólares y centavos.

Lo que aprenderás

  • Guardar el dinero en centavos enteros
  • Escribir centavos como dólares con dos dígitos
  • Construir líneas de informe y un total

Problema

Ver original (inglés)

El dinero suele guardarse como centavos enteros para evitar errores de redondeo, y solo se formatea en dólares al mostrarlo.

Para cada artículo, escribe la línea <name> x<quantity> = <amount>, donde amount = quantity × precio en centavos. Después de los artículos, escribe Total = <amount> con la suma de todas las líneas.

Escribe cada importe en dólares, un punto y exactamente dos dígitos de centavos, por ejemplo 5 → 0.05 y 1250 → 12.50.

Implementa format_invoice(names, quantities, cents).

Entrada

names, quantities, cents: Listas correspondientes que describen cada artículo.

Salida

Devuelve las líneas de los artículos seguidas de la línea del total.

Restricciones

0 ≤ número de artículos ≤ 1,000

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

Ejemplos

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

Salida 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};

Salida 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};

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

Explicación

2 × 250 = 500 centavos son 5.00 y 375 centavos son 3.75; el total es 875 centavos: ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"].

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

Salida 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};

Salida 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};

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

Explicación

3 × 5 = 15 centavos, que se escribe 0.15: ["Gum x3 = 0.15", "Total = 0.15"].

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Haz toda la aritmética en centavos enteros.

Pista 2

Separa los centavos en dólares (cents / 100) y el resto (cents % 100).

Pista 3

Escribe siempre los centavos con dos dígitos: 5 centavos es 0.05.

Complejidad esperada

tiempo O(número de artículos), espacio extra O(número de artículos)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.