Tracks
/
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 la ruta de ejecución de tus programas según condiciones y repetición.

Ejecución condicional

Usa expresiones if para ejecutar código según 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, por lo 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 saltar 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 vas a ayudar a gestionar las operaciones diarias de una pequeña panadería usando las estructuras de control de Cairo.

1. Calcula el total del pedido

Implementa calculate_total, que calcula el costo de un pedido a partir del tipo de producto y la cantidad:

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

2. Aplica descuentos por volumen

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

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

3. Crea el horario de horneado

Implementa baking_schedule, que crea un plan diario de horneado. 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)

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

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

¿Todo 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.