Track
/
Cairo
Cairo
/
Esercizi
/
Sistema di ordini del panificio
Sistema di ordini del panificio

Sistema di ordini del panificio

Esercizio di apprendimento

Introduzione

Il flusso di controllo in Cairo ti permette di controllare il percorso di esecuzione dei tuoi programmi in base a condizioni e ripetizioni.

Esecuzione condizionale

Usa le espressioni if per eseguire del codice in base a delle condizioni:

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

if è un'espressione, quindi può restituire dei valori:

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

Cicli

Usa loop per ripetere del codice. Un ciclo viene eseguito all'infinito, a meno che tu non lo fermi; usa break per uscire dal ciclo quando una condizione è soddisfatta.

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

I cicli possono restituire dei valori usando break:

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

Usa continue per passare all'iterazione successiva:

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
}

Istruzioni

In questo esercizio aiuterai a gestire le attività quotidiane di una piccola panetteria usando i costrutti di controllo di Cairo.

1. Calcola il totale dell'ordine

Implementa calculate_total, che calcola il costo di un ordine in base al tipo di dolce e alla quantità:

  • Croissant: 3 monete ciascuno
  • Muffin: 2 monete ciascuno
  • Cookie: 1 moneta ciascuno
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. Applica gli sconti sulla quantità

Implementa apply_discount, che applica gli sconti in base al totale dell'ordine. Applica lo sconto percentuale al totale, poi arrotonda per difetto alla moneta intera più vicina (floor).

  • Ordini ≥ 20 monete: sconto del 10%
  • Ordini ≥ 10 monete: sconto del 5%
  • Ordini < 10 monete: nessuno sconto
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. Crea il programma di cottura

Implementa baking_schedule, che crea un piano di cottura giornaliero. La panetteria cuoce in lotti di 5 ordini all'ora:

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 i costrutti di controllo appropriati (if/else, loop) per risolvere ogni problema in modo efficiente.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Cairo Exercism

Vuoi iniziare Sistema di ordini del panificio?

Iscriviti a Exercism per imparare e padroneggiare Cairo con 25 concetti68 esercizi e il mentoring di persone reali, tutto gratis.