Треки
/
Cairo
Cairo
/
Вправи
/
Система замовлень у пекарні
Система замовлень у пекарні

Система замовлень у пекарні

Навчальна вправа

Вступ

Потік керування в Cairo дозволяє керувати шляхом виконання наших програм залежно від умов і повторень.

Умовне виконання

Використовуймо вирази if, щоб виконувати код залежно від умов:

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

if є виразом, тому може повертати значення:

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

Цикли

Використовуймо loop, щоб повторювати код. Цикл виконується нескінченно, доки ми його не зупинимо; використовуймо break, щоб перервати цикл, коли умова виконується.

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

Цикли можуть повертати значення за допомогою break:

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

Використовуймо continue, щоб перейти до наступної ітерації:

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
}

Вказівки

У цій вправі ми допоможемо керувати щоденними справами маленької пекарні за допомогою конструкцій керування потоком у Cairo.

1. Обчислити підсумок замовлення

Реалізуйте функцію calculate_total, яка обчислює вартість замовлення залежно від типу випічки та кількості:

  • Круасан: 3 монети за штуку
  • Мафін: 2 монети за штуку
  • Печиво: 1 монета за штуку
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. Застосувати знижки за обсяг

Реалізуйте функцію apply_discount, яка застосовує знижки залежно від підсумку замовлення. Застосуйте відсоткову знижку до підсумку, а потім округліть у менший бік до найближчої цілої монети (округлення вниз).

  • Замовлення ≥ 20 монет: знижка 10%
  • Замовлення ≥ 10 монет: знижка 5%
  • Замовлення < 10 монет: без знижки
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. Створити розклад випікання

Реалізуйте функцію baking_schedule, яка створює план випікання на день. Пекарня випікає партіями по 5 замовлень на годину:

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)

Щоб ефективно розвʼязати кожну задачу, використайте відповідні конструкції керування потоком (if/else, loop).

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Cairo Exercism

Час розпочати Система замовлень у пекарні?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Cairo, а також 25 концепцій68 вправ та справжнє наставництво від людей, і все це безкоштовно.