Rutas
/
Cairo
Cairo
/
Ejercicios
/
Sistema de pedidos de panadería
Sistema de pedidos de panadería

Sistema de pedidos de panadería

Ejercicio de aprendizaje

Introducción

El control de flujo en Cairo te permite controlar el flujo de ejecución de tus programas en función de condiciones y repeticiones.

Ejecución condicional

Usa expresiones if para ejecutar código en función de condiciones:

let number = 42;
if number > 0 {
    println!("Positive number");
} else if number < 0 {
    println!("Negative number");  
} else {
    println!("Zero");
}

if es una expresión, así que puede devolver valores:

let result = if condition { 5 } else { 10 };

Bucles

Usa loop para repetir código. Un bucle se ejecuta indefinidamente a menos que lo detengas; usa break para salir del bucle cuando se cumpla una condición.

let mut counter = 0;
loop {
    if counter == 5 {
        break;
    }
    println!("Counter: {}", counter);
    counter += 1;
}

Los bucles pueden devolver valores usando break:

let result = loop {
    counter += 1;
    if counter == 10 {
        break counter * 2; // Returns 20
    }
};

Usa continue para pasar a la siguiente iteración:

let mut i = 0;
loop {
    i += 1;
    if i % 2 == 0 {
        continue; // Skip even numbers
    }
    if i > 10 {
        break;
    }
    println!("{}", i); // Only prints odd numbers
}

Instrucciones

En este ejercicio ayudarás a gestionar las operaciones diarias de una pequeña panadería utilizando las estructuras de control de flujo de Cairo.

1. Calcular el total del pedido

Implementa calculate_total, que calcula el coste de un pedido según el tipo de bollería y la cantidad:

  • Croissant: 3 monedas cada uno
  • Muffin: 2 monedas cada uno
  • Cookie: 1 moneda cada una
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. Aplicar descuentos por volumen

Implementa apply_discount, que aplica descuentos según el total del pedido. Aplica el descuento porcentual al total y, a continuación, redondea hacia abajo hasta la moneda entera más cercana (floor).

  • Pedidos ≥ 20 monedas: descuento del 10 %
  • Pedidos ≥ 10 monedas: descuento del 5 %
  • Pedidos < 10 monedas: sin descuento
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. Crear el plan de horneado

Implementa baking_schedule, que crea un plan de horneado diario. La panadería hornea en lotes de 5 pedidos por hora:

baking_schedule(18) // Returns: [5, 5, 5, 3] (3 full batches + 3 remaining)
baking_schedule(10) // Returns: [5, 5] (2 full batches)
baking_schedule(3)  // Returns: [3] (1 partial batch)

Utiliza las estructuras de control de flujo adecuadas (if/else, loop) para resolver cada problema de forma eficiente.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Cairo Exercism

¿Listo para empezar Sistema de pedidos de panadería?

Regístrate en Exercism para aprender y dominar Cairo con 25 conceptos68 ejercicios y mentoría humana real, todo gratis.