Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

07 Desafío: Simulador de pedidos en una cafetería

// 1. El personal de atención informa cuántos artículos va a pedir el cliente
let cantidadArticulos = parseInt(prompt("¿Cuántos artículos va a pedir el cliente?"));

// Variables para acumular el total
let totalSinDescuento = 0;

// 2. Bucle para solicitar el nombre y precio de cada artículo
for (let i = 1; i <= cantidadArticulos; i++) {
let nombreArticulo = prompt(Ingrese el nombre del artículo ${i}:);
let precioArticulo = parseFloat(prompt(Ingrese el precio de "${nombreArticulo}":));

// Sumamos el precio al total (validando que sea un número válido)
if (!isNaN(precioArticulo)) {
    totalSinDescuento += precioArticulo;
} else {
    alert("Precio no válido. Se contará como 0 para este artículo.");
}

}

// 3. El sistema pregunta si el cliente está registrado
let estaRegistrado = prompt("¿El cliente está registrado? (responda 'si' o 'no')").toLowerCase();

// Variable para el valor final
let valorFinal = totalSinDescuento;
let mensajeDescuento = "";

// 4. Lógica para aplicar el descuento del 10% si corresponde
if (estaRegistrado === "si" || estaRegistrado === "sí") {
let descuento = totalSinDescuento * 0.10; // 10% de descuento
valorFinal = totalSinDescuento - descuento;
mensajeDescuento = ¡Se aplicó un 10% de descuento por estar registrado! (Ahorró: $${descuento.toFixed(2)});
}

// 5. Mostrar el resultado final al usuario
alert(
--- RESUMEN DEL PEDIDO --- +
\nTotal bruto: $${totalSinDescuento.toFixed(2)} +
mensajeDescuento +
\nTotal a pagar: $${valorFinal.toFixed(2)}
);

1 respuesta

¡Hola Yeferson, espero que estés bien!

Tu código para el simulador de pedidos en una cafetería se ve bastante bien y parece que está siguiendo la lógica requerida para el desafío. Sin embargo, aquí hay un par de detalles que podrías considerar para asegurarte de que todo funcione correctamente:

  1. Validación de entradas: Aunque ya estás validando que el precio ingresado sea un número, también podrías validar que la cantidad de artículos ingresada (cantidadArticulos) sea un número válido. Esto evitará que el programa intente ejecutar un bucle con un valor no numérico.

    let cantidadArticulos = parseInt(prompt("¿Cuántos artículos va a pedir el cliente?"));
    if (isNaN(cantidadArticulos) || cantidadArticulos <= 0) {
        alert("Por favor, ingrese un número válido de artículos.");
        // Podrías considerar salir del programa o pedir nuevamente la cantidad.
    }
    
  2. Formato del mensaje final: En el mensaje final que se muestra al usuario, podrías considerar añadir un salto de línea antes de mensajeDescuento para que el resumen sea más claro y legible.

    alert(
        `--- RESUMEN DEL PEDIDO ---` +
        `\nTotal bruto: $${totalSinDescuento.toFixed(2)}` +
        `\n${mensajeDescuento}` + // Añadir un salto de línea aquí
        `\nTotal a pagar: $${valorFinal.toFixed(2)}`
    );
    
  3. Consideraciones de idioma: Asegúrate de que las respuestas del cliente para la pregunta de registro sean consistentes con las opciones que estás manejando en el código. Por ejemplo, estás considerando "si" y "sí" como respuestas válidas para aplicar el descuento.

Espero que estas sugerencias te sean útiles. ¡Bons estudios!