упр.02 задача 1
- Краен срок:
- 23.10.2026 23:59
- Точки:
- 4
Ще модерирате състоянието на космически апарат, който изследва отдалечена планета.
Изисквания към кода:
-
Дефиниция на структури
Структура SensorData:
- temperature: f64 (температура в целзий)
- radiation_level: u32 (ниво на радиация)
Структура Probe:
- name: String (име на сондата, напр. "Voyager-X")
- battery_percentage: u8 (оставаща батерия от 0 до 100)
- last_reading: SensorData
- status: String (текущ статус, напр. "Active", "Standby", "Error")
-
Функции
- fn create_sensor_data(temperature: f64, radiation_level: u32) -> SensorData
- fn create_probe(name: &str, battery_percentage: u8, sensor_data: SensorData) -> Probe
-
fn diagnostic_check(probe: &Probe):
- Приема имутабилна референция към сондата.
- Ако battery_percentage е под 20%, принтира предупреждение за слаба батерия, а в противен случай извежда пълния дебаг запис на сондата ({:?}).
-
fn recharge_probe(probe: &mut Probe, amount: u8):
- Приема мутабилна референция към сондата и увеличава battery_percentage с даденото количество (внимание: батерията не трябва да надвишава 100%).
-
fn update_status(probe: &mut Probe, new_status: &str):
- Променя полето status на сондата с новото подадено текстово съобщение (преобразувано до String).
-
fn analyze_critical_sensor(sensor: SensorData):
- Тази функция приема SensorData по стойност (прехвърля се собствеността само на вътрешния сензор).
- Вътре в нея проверява дали радиацията надвишава 100 или температурата е екстремна, след което извежда алармен доклад
-
В main трябва да симулирате следната последователност:
- Създайте сензорни данни и инициализирайте поне една сонда (probe1).
- Извикайте диагностична проверка (diagnostic_check).
- Използвайте мутабилна референция, за да презаредите батерията и да промените статуса на сондата на "Exploring".
- Демонстрирайте концепцията за частично преместване (partial move) или преместване на цял обект:
- Извлечете полето last_reading от probe1 (чрез let reading = probe1.last_reading;) и го подайте на функцията analyze_critical_sensor(reading).
- Коментирайте защо след това опитът да използвате цялата сонда probe1 за нови неща може да е ограничен или защо полето ѝ last_reading вече липсва .
Задължително прочетете (или си припомнете): Указания за предаване на домашни
